<?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>217596</bug_id>
          
          <creation_ts>2020-10-11 18:50:26 -0700</creation_ts>
          <short_desc>[GPU Process][Resource caching 6/7]: Cache the NativeImage in GPU Process and allow referencing it with its RemoteResourceIdentifier</short_desc>
          <delta_ts>2020-11-11 17:00:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit 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=218773</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>217573</dependson>
    
    <dependson>218427</dependson>
          <blocked>217166</blocked>
    
    <blocked>217342</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>berto</cc>
    
    <cc>bfulgham</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1696760</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-11 18:50:26 -0700</bug_when>
    <thetext>Currently we draw the NativeImage into a ShareableBitmap and send it to the GPU Process. The GPU Process receives the ShareableBitmap and convert it to a NativeImage. These steps happen every time the same NativeImage is drawn. This would require memory, CPU cycles and IPC communications. We need to cache the BitmapImage frame once and reference it with its RemoteResourceIdentifier.

The life cycle of the cached NativeImages will be determined by the Web Process. If the BitmapImage decides to destroy its decoded data, the GPU Process will delete the same NativeImages which correspond to the same deleted decoded frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696762</commentid>
    <comment_count>1</comment_count>
      <attachid>411086</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-11 19:01:34 -0700</bug_when>
    <thetext>Created attachment 411086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696789</commentid>
    <comment_count>2</comment_count>
      <attachid>411096</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-11 21:54:07 -0700</bug_when>
    <thetext>Created attachment 411096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696795</commentid>
    <comment_count>3</comment_count>
      <attachid>411098</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-12 00:08:16 -0700</bug_when>
    <thetext>Created attachment 411098
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696888</commentid>
    <comment_count>4</comment_count>
      <attachid>411125</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-12 09:58:56 -0700</bug_when>
    <thetext>Created attachment 411125
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699182</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-18 18:51:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/70424954&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700534</commentid>
    <comment_count>6</comment_count>
      <attachid>412064</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-21 20:49:04 -0700</bug_when>
    <thetext>Created attachment 412064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700559</commentid>
    <comment_count>7</comment_count>
      <attachid>412070</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-21 23:33:35 -0700</bug_when>
    <thetext>Created attachment 412070
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702555</commentid>
    <comment_count>8</comment_count>
      <attachid>412586</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-10-28 16:33:19 -0700</bug_when>
    <thetext>Created attachment 412586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702874</commentid>
    <comment_count>9</comment_count>
      <attachid>412586</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-29 14:38:41 -0700</bug_when>
    <thetext>Comment on attachment 412586
Patch

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

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:214
&gt; +static inline void drawNativeImage(BitmapImage&amp; image, GraphicsContext&amp; context, const NativeImagePtr&amp; nativeImage, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const IntSize&amp; srcSize, const ImagePaintingOptions&amp; options)

It&apos;s really confusing for this to take both a BitmapImage and a NativeImage. Can the latter be derived from the former?

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:734
&gt; +void GraphicsContext::drawNativeImage(const NativeImagePtr&amp; image, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const ImagePaintingOptions&amp; options, CachedImage* cachedImage)

This is a layering violation. You can&apos;t use CachedImage in platform code.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1736
&gt; +    WEBCORE_EXPORT DrawNativeImage(const NativeImageType&amp;, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const ImagePaintingOptions&amp;);

I don&apos;t think it makes sense to encode draw native image. If we&apos;re drawing an image with GPUP, can&apos;t it always be represented as an ImageBuffer?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:190
&gt; +void Recorder::drawNativeImage(const NativeImagePtr&amp; image, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const ImagePaintingOptions&amp; options, CachedImage* cachedImage)

layering violation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703417</commentid>
    <comment_count>10</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-01 12:52:47 -0800</bug_when>
    <thetext>The life cycle of the PlatformImage will be controlled by a new called called NativeImage, see bug 218427.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703600</commentid>
    <comment_count>11</comment_count>
      <attachid>412945</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-02 11:00:29 -0800</bug_when>
    <thetext>Created attachment 412945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703601</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-11-02 11:01:07 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703604</commentid>
    <comment_count>13</comment_count>
      <attachid>412947</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-02 11:02:19 -0800</bug_when>
    <thetext>Created attachment 412947
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703820</commentid>
    <comment_count>14</comment_count>
      <attachid>412947</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-11-02 23:07:58 -0800</bug_when>
    <thetext>Comment on attachment 412947
Patch for review

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:761
&gt; +    if (m_impl &amp;&amp; image.isPDFDocumentImage())

Why should we need to check PDF document images here? This seems to break encapsulation.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:179
&gt; +void RemoteRenderingBackend::cachePlatformImage(const PlatformImagePtr&amp; image, RenderingResourceIdentifier renderingResourceIdentifier)

I don&apos;t see the type PlatformImagePtr defined anywhere.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:84
&gt; +bool RemoteResourceCacheProxy::lockRemoteNativeImageForRemoteClient(NativeImage&amp; image, RenderingResourceIdentifier remoteClientIdentifier)

I don&apos;t see the NativeImage type defined anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703821</commentid>
    <comment_count>15</comment_count>
      <attachid>412947</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-11-02 23:10:14 -0800</bug_when>
    <thetext>Comment on attachment 412947
Patch for review

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp:51
&gt; +PlatformImagePtr RemoteResourceCache::cachedPlatformImage(RenderingResourceIdentifier renderingResourceIdentifier)

Nit: It&apos;s not really a &quot;cache&quot; if there is no automatic eviction. This seems more like a &quot;repository&quot; or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703822</commentid>
    <comment_count>16</comment_count>
      <attachid>412947</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-11-02 23:16:41 -0800</bug_when>
    <thetext>Comment on attachment 412947
Patch for review

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

This looks like a good direction.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:59
&gt; +    void nativeImageWillBeDeleted(WebCore::RenderingResourceIdentifier) override;

final?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703824</commentid>
    <comment_count>17</comment_count>
      <attachid>412947</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-11-02 23:32:11 -0800</bug_when>
    <thetext>Comment on attachment 412947
Patch for review

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

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:84
&gt;&gt; +bool RemoteResourceCacheProxy::lockRemoteNativeImageForRemoteClient(NativeImage&amp; image, RenderingResourceIdentifier remoteClientIdentifier)
&gt; 
&gt; I don&apos;t see the NativeImage type defined anywhere.

Oh, it&apos;s in https://bugs.webkit.org/show_bug.cgi?id=218427</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706219</commentid>
    <comment_count>18</comment_count>
      <attachid>413740</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-10 14:13:49 -0800</bug_when>
    <thetext>Created attachment 413740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706221</commentid>
    <comment_count>19</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-10 14:21:06 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #18)
&gt; Created attachment 413740 [details]
&gt; Patch

Three notes about this patch:

1. PDFDocumentImage will be broken but the rest of images should be fine with this patch. Once it is landed I am going to file a bug for PDFDocumentImage.

2. The following DisplayList items should be removed in a follow-up patch since they are used with this patch:

    DrawImage,
    DrawTiledImage,
    DrawTiledScaledImage,

3. Drawing a canvas into another canvas is blocked by bug 218773.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706227</commentid>
    <comment_count>20</comment_count>
      <attachid>413742</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-10 14:34:25 -0800</bug_when>
    <thetext>Created attachment 413742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706228</commentid>
    <comment_count>21</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-10 14:36:14 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #19)
&gt; (In reply to Said Abou-Hallawa from comment #18)
&gt; &gt; Created attachment 413740 [details]
&gt; &gt; Patch
&gt; 
&gt; Three notes about this patch:
&gt; 
&gt; 1. PDFDocumentImage will be broken but the rest of images should be fine
&gt; with this patch. Once it is landed I am going to file a bug for
&gt; PDFDocumentImage.
&gt; 
&gt; 2. The following DisplayList items should be removed in a follow-up patch
&gt; since they are used with this patch:
&gt; 
&gt;     DrawImage,
&gt;     DrawTiledImage,
&gt;     DrawTiledScaledImage,
&gt; 
&gt; 3. Drawing a canvas into another canvas is blocked by bug 218773.

A fourth comment

4. I think the class ImageDataReference can be replaced by just

using ImageDataReference = RefPtr&lt;ImageData&gt;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706236</commentid>
    <comment_count>22</comment_count>
      <attachid>413742</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-10 14:59:44 -0800</bug_when>
    <thetext>Comment on attachment 413742
Patch

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

I think this patch looks pretty good! A couple of minor comments:

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1280
&gt; +    DrawNativeImage(RenderingResourceIdentifier renderingResourceIdentifier, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const ImagePaintingOptions&amp; options)

Nit - I think we might actually be able to remove this and just use the default constructor instead?

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:52
&gt; +bool RemoteResourceCacheProxy::cacheNativeImage(NativeImage&amp; image)

Nit - it wasn&apos;t obvious at first what the bool argument here represents; could we use an enum instead, like `enum class AddedNewEntry : bool { No, Yes };`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706266</commentid>
    <comment_count>23</comment_count>
      <attachid>413754</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-10 15:58:31 -0800</bug_when>
    <thetext>Created attachment 413754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706267</commentid>
    <comment_count>24</comment_count>
      <attachid>413742</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-10 15:59:15 -0800</bug_when>
    <thetext>Comment on attachment 413742
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1280
&gt;&gt; +    DrawNativeImage(RenderingResourceIdentifier renderingResourceIdentifier, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const ImagePaintingOptions&amp; options)
&gt; 
&gt; Nit - I think we might actually be able to remove this and just use the default constructor instead?

What do you mean by the default constructor in this context? The default constructor does not expect any parameters and all the members of this class are private.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:52
&gt;&gt; +bool RemoteResourceCacheProxy::cacheNativeImage(NativeImage&amp; image)
&gt; 
&gt; Nit - it wasn&apos;t obvious at first what the bool argument here represents; could we use an enum instead, like `enum class AddedNewEntry : bool { No, Yes };`?

I changed the code such that we do not need to return a bool from this function. I made sending the CacheNativeImage message initiated by this function. This will correspond to what we do in RemoteResourceCacheProxy::nativeImageWillBeDeleted() where we initiate sending the ReleaseRemoteResource message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706274</commentid>
    <comment_count>25</comment_count>
      <attachid>413742</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-11-10 16:07:50 -0800</bug_when>
    <thetext>Comment on attachment 413742
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1280
&gt;&gt;&gt; +    DrawNativeImage(RenderingResourceIdentifier renderingResourceIdentifier, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const ImagePaintingOptions&amp; options)
&gt;&gt; 
&gt;&gt; Nit - I think we might actually be able to remove this and just use the default constructor instead?
&gt; 
&gt; What do you mean by the default constructor in this context? The default constructor does not expect any parameters and all the members of this class are private.

My bad — that&apos;s correct, we need this constructor because the members are private.

&gt;&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:52
&gt;&gt;&gt; +bool RemoteResourceCacheProxy::cacheNativeImage(NativeImage&amp; image)
&gt;&gt; 
&gt;&gt; Nit - it wasn&apos;t obvious at first what the bool argument here represents; could we use an enum instead, like `enum class AddedNewEntry : bool { No, Yes };`?
&gt; 
&gt; I changed the code such that we do not need to return a bool from this function. I made sending the CacheNativeImage message initiated by this function. This will correspond to what we do in RemoteResourceCacheProxy::nativeImageWillBeDeleted() where we initiate sending the ReleaseRemoteResource message.

👍🏻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706301</commentid>
    <comment_count>26</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-10 17:26:40 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #21)
&gt; (In reply to Said Abou-Hallawa from comment #19)
&gt; &gt; (In reply to Said Abou-Hallawa from comment #18)
&gt; &gt; &gt; Created attachment 413740 [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Three notes about this patch:
&gt; &gt; 
&gt; &gt; 1. PDFDocumentImage will be broken but the rest of images should be fine
&gt; &gt; with this patch. Once it is landed I am going to file a bug for
&gt; &gt; PDFDocumentImage.
&gt; &gt; 
&gt; &gt; 2. The following DisplayList items should be removed in a follow-up patch
&gt; &gt; since they are used with this patch:
&gt; &gt; 
&gt; &gt;     DrawImage,
&gt; &gt;     DrawTiledImage,
&gt; &gt;     DrawTiledScaledImage,
&gt; &gt; 
&gt; &gt; 3. Drawing a canvas into another canvas is blocked by bug 218773.
&gt; 
&gt; A fourth comment
&gt; 
&gt; 4. I think the class ImageDataReference can be replaced by just
&gt; 
&gt; using ImageDataReference = RefPtr&lt;ImageData&gt;;

5. Maybe it is time to add something like DisplayList::ResourceCache and have both
RemoteResourceCacheProxy and RemoteResourceCache inherit from it.

namespace DisplayList {

class ResourceCache {
public:
    virtual void cacheImageBuffer(Ref&lt;ImageBuffer&gt;&amp;&amp;);
    virtual void releaseImageBuffer(WebCore::RenderingResourceIdentifier);
    ImageBuffer* cachedImageBuffer(RenderingResourceIdentifier);

    virtual void cacheNativeImage(WebCore::NativeImage&amp;);
    virtual void releaseNativeImage(WebCore::RenderingResourceIdentifier);

    const ImageBufferHashMap&amp; imageBuffers() const { return m_imageBuffers; }
    const NativeImageHashMap&amp; nativeImages() const { return m_nativeImages; }

private:
    ImageBufferHashMap m_imageBuffers;
    NativeImageHashMap m_nativeImages;
};

}

And a pointer to ResourceCache can be passed to DisplayList::Replayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706310</commentid>
    <comment_count>27</comment_count>
      <attachid>413761</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-10 18:37:29 -0800</bug_when>
    <thetext>Created attachment 413761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706317</commentid>
    <comment_count>28</comment_count>
      <attachid>413761</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-10 19:28:55 -0800</bug_when>
    <thetext>Comment on attachment 413761
Patch

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

&gt; Source/WebCore/platform/graphics/NativeImage.cpp:48
&gt; +    if (m_observer)
&gt; +        m_observer-&gt;releaseNativeImage(m_renderingResourceIdentifier);

The observer is holding a ref to the NativeImage, so this code will never get hit. I think you&apos;re leaking all the images.

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:30
&gt; +    CacheNativeImage(WebCore::NativeImageReference nativeImage)

I think it&apos;s deceptive to state that we can encode NativeImages like this. We can&apos;t losslessly encode PDF images, SVG Images etc. I think this should take ShareableBitmap and RenderingRsourceIdentifier arguments.

&gt; Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h:55
&gt;      WebCore::ImageBufferHashMap m_imageBuffers;
&gt; +    WebCore::NativeImageHashMap m_nativeImages;

At some point m_imageBuffers will go away, and m_nativeImages will be SharableBitmaps, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706365</commentid>
    <comment_count>29</comment_count>
      <attachid>413786</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-10 23:01:06 -0800</bug_when>
    <thetext>Created attachment 413786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706516</commentid>
    <comment_count>30</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-11 10:44:09 -0800</bug_when>
    <thetext>The failure on iOS is happening because custom painting uses DisplayList for drawing. Because I removed recording the DrawImage, calling BitmapImage() is now allowed while the GraphicsContext is backed by a DisplayList::Recorder. And because allowSubsampling is allowed on iOS only, we end up calling the function BitmapImage::subsamplingLevelForScaleFactor() which expects a GraphicsContext with a valid platformContext(). I think the fix for this function is to check context.hasPlatformContext() before using context.platformContext().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706527</commentid>
    <comment_count>31</comment_count>
      <attachid>413842</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-11 11:09:11 -0800</bug_when>
    <thetext>Created attachment 413842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706550</commentid>
    <comment_count>32</comment_count>
      <attachid>413847</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-11 11:56:56 -0800</bug_when>
    <thetext>Created attachment 413847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706572</commentid>
    <comment_count>33</comment_count>
      <attachid>413761</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-11 12:19:57 -0800</bug_when>
    <thetext>Comment on attachment 413761
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/NativeImage.cpp:48
&gt;&gt; +        m_observer-&gt;releaseNativeImage(m_renderingResourceIdentifier);
&gt; 
&gt; The observer is holding a ref to the NativeImage, so this code will never get hit. I think you&apos;re leaking all the images.

Yes you right. I also mistakenly replaced the type of RemoteResourceCacheProxy::m_imageBuffers from 

    using RemoteImageBufferProxyHashMap = HashMap&lt;WebCore::RenderingResourceIdentifier, WebCore::ImageBuffer*&gt;

to NativeImageHashMap which is 

    using ImageBufferHashMap = HashMap&lt;RenderingResourceIdentifier, Ref&lt;ImageBuffer&gt;&gt;;

So the NativeImage and the ImageBuffers were leaking when GPU rendering for canvas is enabled. I made RemoteResourceCacheProxy holds raw pointer for ImageBuffer and NativeImage and I made sure the destructor of NativeImage is being called when the decoded frame is destroyed.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:30
&gt;&gt; +    CacheNativeImage(WebCore::NativeImageReference nativeImage)
&gt; 
&gt; I think it&apos;s deceptive to state that we can encode NativeImages like this. We can&apos;t losslessly encode PDF images, SVG Images etc. I think this should take ShareableBitmap and RenderingRsourceIdentifier arguments.

I do not fully understand this comment. I think:

1. We need to decode the PlatformImagePtr into a SharableBitmap inside the NativeImage. So encoding/decoding the NativeImage will be done by sending a Handle from WebP to GPUP.
2. We need to have CachePDFDocumentImage([no sure what should be here but maybe a SharedBuffer])
3. For the reset of the images they are already fixed by removing the recording from the GraphicsContext functions. For example, SVGImage should work if DOM rendering is enabled.

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h:55
&gt;&gt; +    WebCore::NativeImageHashMap m_nativeImages;
&gt; 
&gt; At some point m_imageBuffers will go away, and m_nativeImages will be SharableBitmaps, right?

m_imageBuffers have to stay since this is where the RemoteImageBuffers in the GPU side can live. The m_nativeImages have to stay as well but the underlying data will be a SharableBitmap instead of PlatformImagePtr. These two HashMaps are used to

1. Keep the resources alive in the GPU side
2. Resolve the renderingResourceIdentifier in DrawImageBuffer and DrawNativeImage to a resource when replaying back the DisplayList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706608</commentid>
    <comment_count>34</comment_count>
      <attachid>413847</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-11 13:46:15 -0800</bug_when>
    <thetext>Comment on attachment 413847
Patch

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

&gt; Source/WebCore/platform/graphics/NativeImage.h:61
&gt; +    void setRenderingResourceIdentifier(RenderingResourceIdentifier renderingResourceIdentifier) { m_renderingResourceIdentifier = renderingResourceIdentifier; }

It&apos;s a bit weird to have m_renderingResourceIdentifier be initialized to the generated value, then set here. Should RenderingResourceIdentifier be passed into the constructor as an Optional&lt;&gt;?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1300
&gt; +    RenderingResourceIdentifier m_renderingResourceIdentifier;

We can all this m_imageIdentifier here

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:201
&gt; +    if (!m_delegate)
&gt; +        m_displayList.cacheNativeImage(image);
&gt; +    else
&gt; +        m_delegate-&gt;cacheNativeImage(image);

This is a bit confusing. It assumes knowledge of delegate behavior.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:65
&gt;          if (!m_remoteRenderingBackendProxy)
&gt;              return;
&gt;          flushDrawingContext();
&gt; +        m_remoteRenderingBackendProxy-&gt;remoteResourceCacheProxy().releaseImageBuffer(m_renderingResourceIdentifier);
&gt;          m_remoteRenderingBackendProxy-&gt;releaseRemoteResource(m_renderingResourceIdentifier);

Please move to the .cpp file.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:89
&gt;      {
&gt;          ASSERT(m_remoteRenderingBackendProxy);
&gt; +        m_remoteRenderingBackendProxy-&gt;remoteResourceCacheProxy().cacheImageBuffer(*this);
&gt; +
&gt;          m_drawingContext.displayList().setItemBufferClient(this);
&gt;          m_drawingContext.displayList().setTracksDrawingItemExtents(false);
&gt;      }

Move to the cpp file.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:191
&gt; +    void cacheNativeImage(WebCore::NativeImage&amp; image) override
&gt; +    {
&gt; +        if (m_remoteRenderingBackendProxy)
&gt; +            m_remoteRenderingBackendProxy-&gt;remoteResourceCacheProxy().cacheNativeImage(image);
&gt; +    }

Put in the cpp file.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:54
&gt; +    using ImageBufferHashMap = HashMap&lt;WebCore::RenderingResourceIdentifier, WebCore::ImageBuffer*&gt;;
&gt; +    using NativeImageHashMap = HashMap&lt;WebCore::RenderingResourceIdentifier, WebCore::NativeImage*&gt;;

Can we use WeakPtr here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706642</commentid>
    <comment_count>35</comment_count>
      <attachid>413875</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-11 15:37:53 -0800</bug_when>
    <thetext>Created attachment 413875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706656</commentid>
    <comment_count>36</comment_count>
      <attachid>413847</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-11 16:15:42 -0800</bug_when>
    <thetext>Comment on attachment 413847
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/NativeImage.h:61
&gt;&gt; +    void setRenderingResourceIdentifier(RenderingResourceIdentifier renderingResourceIdentifier) { m_renderingResourceIdentifier = renderingResourceIdentifier; }
&gt; 
&gt; It&apos;s a bit weird to have m_renderingResourceIdentifier be initialized to the generated value, then set here. Should RenderingResourceIdentifier be passed into the constructor as an Optional&lt;&gt;?

This function was removed. Instead a new create and a new constructor were added to take PlatformImagePtr and RenderingResourceIdentifier.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1300
&gt;&gt; +    RenderingResourceIdentifier m_renderingResourceIdentifier;
&gt; 
&gt; We can all this m_imageIdentifier here

The name of this member was changed to m_imageIdentifier.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.cpp:201
&gt;&gt; +        m_delegate-&gt;cacheNativeImage(image);
&gt; 
&gt; This is a bit confusing. It assumes knowledge of delegate behavior.

Yes this is right. I was trying to save a call to DisplayList::cacheNativeImage() but calling it unconditionally is cleaner and can make the DisplayList re-playable by itself.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:191
&gt;&gt; +    }
&gt; 
&gt; Put in the cpp file.

There is no cpp file for this header file.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:54
&gt;&gt; +    using NativeImageHashMap = HashMap&lt;WebCore::RenderingResourceIdentifier, WebCore::NativeImage*&gt;;
&gt; 
&gt; Can we use WeakPtr here?

Yes we can. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706683</commentid>
    <comment_count>37</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-11 17:00:15 -0800</bug_when>
    <thetext>Committed r269708: &lt;https://trac.webkit.org/changeset/269708&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413875.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411086</attachid>
            <date>2020-10-11 19:01:34 -0700</date>
            <delta_ts>2020-10-11 21:54:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201011190133.patch</filename>
            <type>text/plain</type>
            <size>199063</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMxYWE4Njk0MDM0ZjFl
ZDg1MGRmZjdlYzFlNmViYThkZTNiNGJiZS4uMDEwNTQ1YjI3YTdiNDIzODU3YTNlMTE0Y2MzZDVj
OGZkZDU3ZmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMSBAQAorMjAyMC0xMC0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gQ2FjaGUgdGhlIEJpdG1hcEltYWdlIGZyYW1lIGluIEdQVSBQcm9jZXNzIGFuZCBh
bGxvdyByZWZlcmVuY2luZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRtbC9JbWFn
ZUJpdG1hcC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2Jz
ZXJ2ZXI6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZUNsaWVudDo6bmF0aXZlSW1h
Z2VXaWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFn
ZTo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6Om5hdGl2ZUltYWdlUHRyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjppbWFnZVNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6b3B0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUlt
YWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbSk6
CisKKzIwMjAtMTAtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENsZWFuIHRoZSBEaXNwbGF5TGlzdCByZWNvcmRp
bmcgb2YgdGhlIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAxKSBNb3ZlIHRoZSBkZWZpbml0aW9uIG9mIE5hdGl2ZUltYWdlUHRyIHRv
IGEgc2VwYXJhdGUgaGVhZGVyIGZpbGUgbmFtZWQKKyAgICAgICAgICAgTmF0aXZlSW1hZ2VQdHIu
CisgICAgICAgIDIpIFJlbW92ZSB0aGUgY2xhc3MgSW1hZ2VIYW5kbGUgYW5kIGFsbG93IGVuY29k
aW5nIGFuZCBkZWNvZGluZyBOYXRpdmVJbWFnZVB0cgorICAgICAgICAgICBkaXJlY3RseS4KKyAg
ICAgICAgMykgUmVtb3ZlIHRoZSBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGFyb3VuZCB0aGUgRGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZQorICAgICAgICAgICBpdGVtIGFuZCB0aGUgbWV0aG9k
IGRyYXdOYXRpdmVJbWFnZSgpLgorICAgICAgICA0KSBNb3ZlIHRoZSBkcmF3TmF0aXZlSW1hZ2Uo
KSBtZXRob2RzIHRvIHRoZSBzb3VyY2VzIG9mIHRoZWlyIGNhbGxlcnMuCisgICAgICAgIDUpIElu
IHRoZSBjYXNlIG9mIHJlY29yZGluZyB0aGUgZHJhd2luZyBjb21tYW5kcywgbWFrZSBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZSgpCisgICAgICAgICAgIHByb2Nlc3MgZHJhd2luZyB0aGUgaW1h
Z2VzIHN1Y2ggdGhhdCBwcmltaXRpdmVzIGRyYXdpbmcgY29tbWFuZHMgYXJlCisgICAgICAgICAg
IHJlY29yZGVkLiBGb3IgZXhhbXBsZSBhIEJpdG1hcEltYWdlIHdpbGwgcmVuZGVyIGEgTmF0aXZl
SW1hZ2UgZXZlbnR1YWxseS4KKyAgICAgICAgICAgQW5kIFNWR0ltYWdlIHdpbGwgcmVjb3JkIGl0
cyByZW5kZXIgdHJlZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2VQdHIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6cmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3SW1hZ2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlvblJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6b3B0aW9ucyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisKKzIwMjAtMTAtMTAgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFBy
b2Nlc3NdIEltcGxlbWVudCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyIGl0ZW0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU2NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzZXF1ZW5jZSBp
biB0aGUgV2ViIFByb2Nlc3MgaXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAtLSBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcigpIHVzZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyIHRv
IGNoZWNrCisgICAgICAgICAgIHdoZXRoZXIgaXQgaXMgYXBwcm9wcmlhdGUgdG8gY3JlYXRlIERy
YXdJbWFnZUJ1ZmZlciBpdGVtIG9yIG5vdC4KKworICAgICAgICAtLSBEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcigpIHVzZXMgdGhlIGRlbGVnYXRlIHRvIHRvIGNyZWF0ZQor
ICAgICAgICAgICB0aGUgRHJhd0ltYWdlQnVmZmVyIGl0ZW0uCisKKyAgICAgICAgLS0gU2luY2Ug
UmVtb3RlSW1hZ2VCdWZmZXIgaW5oZXJpdHMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0
ZSwgCisgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJ
dGVtKCkgd2lsbCBiZSBjYWxsZWQuCisKKyAgICAgICAgLS0gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbSgpIHdpbGwgYmUgY2FsbGVkIG5leHQKKyAgICAg
ICAgICAgd2hpY2ggd2lsbCBjYWxsIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdJbWFn
ZUJ1ZmZlckl0ZW0oKS4KKworICAgICAgICAtLSBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVE
cmF3SW1hZ2VCdWZmZXJJdGVtKCkgY2hlY2tzIGl0cyBIYXNoTWFwCisgICAgICAgICAgIHVzaW5n
IHRoZSBJbWFnZUJ1ZmZlciogdG8gZmluZCB0aGUgY29ycmVzcG9uZGluZyBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIuCisgICAgICAgICAgIElmIGl0IGZpbmRzIGl0LCBpdCB3aWxsIGNyZWF0ZSB0
aGUgRHJhd0ltYWdlQnVmZmVyIGl0ZW0uCisKKyAgICAgICAgVGhlIHNlcXVlbmNlIGluIHRoZSBH
UFUgUHJvY2VzcyBpcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIFdoZW4gcmVwbGF5aW5n
IGJhY2sgdGhlIERpc3BsYXlMaXN0LCBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgd2lsbCBjYWxsCisg
ICAgICAgICAgIGl0cyBkZWxlZ2F0ZSB0byBjaGVjayBpZiBpdCB3YW50cyB0byBhcHBseSB0aGUg
RHJhd0ltYWdlQnVmZmVyLgorCisgICAgICAgIC0tIEJlY2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSBpbmhlcml0cyBEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlLAorICAgICAgICAg
ICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjphcHBseSgpIHdpbGwgYmUgY2FsbGVkLgorCisgICAg
ICAgIC0tIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgd2lsbCBjYWxsIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6YXBwbHlSZXNvdXJjZUl0ZW0oKQorICAgICAgICAgICB3aGljaCB3aWxsIHBh
c3MgaXQgdG8gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS4KKworICAgICAgICAtLSBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKCkgd2lsbCBzZWFyY2ggZm9y
IGEKKyAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXIgd2hvc2UgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIG1hdGNoZXMgdGhlIG9uZSBpbgorICAgICAgICAgICBEcmF3SW1hZ2VCdWZmZXIuIEFu
ZCB0aGVyZSBpcyBvbmUsIGl0IHdpbGwgZHJhd3MgdG8gR3JhcGhpY3NDb250ZXh0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0Nv
bnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpEcmF3
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlvblJlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6b3B0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXhM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnB1
dEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Ondp
bGxBcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpEZWxlZ2F0ZTo6fkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9ic2Vy
dmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
T2JzZXJ2ZXI6OndpbGxBcHBlbmRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoK
KyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oOgorCisyMDIwLTEwLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1
Y2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRo
ZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE3NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGEgbmV3IHZpcnR1YWwgbWV0aG9kcyB0byBJbWFnZUJ1ZmZlciB3aGljaCB1c2Vk
IHRvIGJlIGEgdmlydHVhbCBtZXRob2QKKyAgICAgICAgb2YgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LiBUaGlzIG1ldGhvZCBpcyBhbHJlYWR5IG92ZXJyaWRkZW4KKyAgICAg
ICAgYnkgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBhbmQgaXMgY2FsbGVkIGJ5IFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS4gQnV0CisgICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBrZWVw
cyBhIEhhc2hNYXAgb2YgSW1hZ2VCdWZmZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaERy
YXdpbmdDb250ZXh0KToKKworMjAyMC0xMC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IFJlcGxhY2UgIkltYWdl
QnVmZmVySWRlbnRpZmllciIgYnkgYSBnZW5lcmljIGlkZW50aWZpZXIgbmFtZWQgIlJlbW90ZVJl
c291cmNlSWRlbnRpZmllciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciB3aWxsIGJlIHVzZWQgaW4gV2ViQ29y
ZSB3aGVuIHJlY29yZGluZyBkcmF3aW5nCisgICAgICAgIGEgcmVtb3RlIEltYWdlQnVmZmVyIHRv
IGFub3RoZXIgcmVtb3RlIEltYWdlQnVmZmVyLiBFdmVudHVhbGx5IGl0IHdpbGwKKyAgICAgICAg
YmUgdXNlZCBkcmF3aW5nIGEgcmVtb3RlIE5hdGl2ZUltYWdlIHRvIGEgcmVtb3RlIEltYWdlQnVm
ZmVyIG9yIERPTSBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMC0xMC0wOSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc10gTWVjaGFuaWNhbCBjbGVhbnVwIGluIERpc3BsYXlMaXN0UmVjb3JkZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYTViYTM0N2IxYTFmZmYyOTFkZWE4NDEyM2MwNDY2ZTlhMGU2NDc4ZS4uMjhjMTIzMTkw
MzFkZTI5ZGEwMTVmODExMjYwZmJhZmQxMzk5YWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNTQg
QEAKKzIwMjAtMTAtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENhY2hlIHRoZSBCaXRtYXBJbWFnZSBmcmFtZSBp
biBHUFUgUHJvY2VzcyBhbmQgYWxsb3cgcmVmZXJlbmNpbmcgaXQgd2l0aCBpdHMgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTc1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNo
ZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3TmF0aXZlSW1hZ2VJdGVtIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291
cmNlSXRlbSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDYWNoZU5hdGl2ZUltYWdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdO
YXRpdmVJbWFnZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpy
ZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKworMjAyMC0xMC0xMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2xlYW4gdGhlIERpc3BsYXlMaXN0IHJlY29yZGluZyBvZiB0aGUgTmF0aXZlSW1hZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHA6CisgICAgICAgIChJUEM6OmVuY29kZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKElQQzo6ZW5j
b2RlT3B0aW9uYWxOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0
aXZlSW1hZ2VQdHI+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2
ZUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJ
bWFnZUhhbmRsZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxl
Qml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToK
KworMjAyMC0xMC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IERpc3BsYXlMaXN0OjpEcmF3SW1h
Z2VCdWZmZXIgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE3NTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6YXBwbHkpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjphcHBseVJlc291cmNl
SXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZmZXJJdGVtIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291cmNlSXRlbSBjb25zdCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6flJlbW90ZUltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
RHJhd0ltYWdlQnVmZmVySXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKworMjAyMC0xMC0xMCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGUgdG8gbWFuYWdlIHRoZSByZW1vdGUg
cmVzb3VyY2VzIGluIFdlYiBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTc1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwgYmUgcmVzcG9uc2libGUg
Zm9yIG1hbmFnaW5nIHRoZSByZW1vdGUgcmVzb3VyY2VzCisgICAgICAgIGluY2x1ZGluZyB0aGVp
ciBhY3R1YWwgbGlmZSBjeWNsZSBpbiB0aGUgV2ViIFByb2Nlc3Mgc2lkZS4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZAorICAgICAgICB3aWxsIGJlIHJlc3BvbnNpYmxlIG9ubHkgZm9yIHRoZSBJUEMg
Y29tbXVuaWNhdGlvbnMgd2l0aCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisgICAgICAg
IEl0IHdpbGwgZGVsZWdhdGUgYWxsIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50IHRvIGl0cyBSZW1v
dGVSZXNvdXJjZUNhY2hlLgorCisgICAgICAgIEJlY2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXIgZG9l
cyB0aGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFdlYkNvcmUgYW5kIEdQVQorICAgICAgICBQcm9j
ZXNzLCBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwga2VlcCB0d28gSGFzaE1hcHMgdG8gZWFzZSB0
aGUgbWFwcGluZworICAgICAgICBpbiBib3RoIGRpcmVjdGlvbnM6CisKKyAgICAgICAgLS0gbV9y
ZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbWFwcyBJbWFnZUJ1ZmZlciogLT4gUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyCisgICAgICAgIC0tIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ckhhc2hNYXAgbWFwcyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgICAgLT4gUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcioKKworICAgICAgICBUbyBrZWVwIHRyYWNrIG9m
IHRoZSByZXNvdXJjZSByZWZlcmVuY2luZywgUmVtb3RlUmVzb3VyY2VDYWNoZSB1c2VzIGFub3Ro
ZXIgCisgICAgICAgIG1hcCB3aGljaCByZWxhdGVzIGEgcmVtb3RlIHJlc291cmNlIHdpdGggdGhl
IHNldCBvZiByZW1vdGUgZHJhd2luZyBjbGllbnRzLgorICAgICAgICAKKyAgICAgICAgLS0gbV9y
ZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1hcHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IC0+CisgICAgICAgICAgIEhhc2hTZXQ8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPgorCisgICAg
ICAgIFRoZSByZW1vdGUgcmVzb3VyY2UgaGFzIHN0YXkgYWxpdmUgdGlsbCB0aGVpciBjbGllbnRz
IHJlcGxheWVkIGJhY2sgdGhlaXIKKyAgICAgICAgRGlzcGxheUxpc3Q6Okl0ZW1zIHdoaWNoIHJl
ZmVyZW5jZSB0aGVzZSByZXNvdXJjZXMuIE9uY2UgUmVtb3RlUmVzb3VyY2VDYWNoZQorICAgICAg
ICBpcyByZXF1ZXN0ZWQgdG8gcmVsZWFzZSBhIHJlbW90ZSByZXNvdXJjZSBidXQgaXQgZmluZHMg
dGhpcyByZXNvdXJjZSBpcworICAgICAgICByZWZlcmVuY2VkIGJ5IGEgc2V0IG9mIHJlbW90ZSBk
cmF3aW5nIGNsaWVudHMsIGl0IG1vdmVzIHRoZSBlbnRyeSBvZiB0aGlzCisgICAgICAgIHJlc291
cmNlIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIHRvIGFub3RoZXIgSGFzaE1h
cCBuYW1lZDoKKworICAgICAgICAtLSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxl
YXNlSGFzaE1hcCBtYXBzIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICAgICAtPiBI
YXNoU2V0PFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4KKworICAgICAgICBXaGVuIGFuIGVudHJ5
IGZvciBhIHJlbW90ZSByZXNvdXJjZSBleGlzdHMgaW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQ
ZW5kaW5nUmVsZWFzZUhhc2hNYXAgCisgICAgICAgIGFuZCBubyByZW1vdGUgY2xpZW50IHJlZmVy
ZW5jZXMgaXQgYW55bW9yZSwgUmVtb3RlUmVzb3VyY2VDYWNoZSB3aWxsIHRlbGwgCisgICAgICAg
IEdQVSBQcm9jZXNzIHRvIHJlbGVhc2UgaXRzIHJlbW90ZSByZXNvdXJjZSBhcyB3ZWxsLgorCisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
cjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Y29t
bWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlR2V0SW1hZ2VEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJl
bW90ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFn
ZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNv
dXJjZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGU6OmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmFkZFJlbW90ZUNsaWVudCk6CisgICAgICAg
IExpbmtzIGEgcmVtb3RlIHJlc291cmNlIHdpdGggYSBkcmF3aW5nIHJlbW90ZSBjbGllbnQuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGllbnQpOgorICAgICAgICBSZW1vdmUgYWxsIHRoZSBlbnRy
aWVzIHdoaWNoIGluY2x1ZGVzIGEgY2VydGFpbiByZW1vdGUgY2xpZW50LgorCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVDbGllbnQpOgorICAgICAg
ICBBIHJlbW90ZSBjbGllbnQgaGFzIGRvbmUgZmx1c2hpbmcgaXRzIERyYXdpbmdDb250ZXh0LiBJ
dCdzIHRpbWUgdG8gYm9vay0KKyAgICAgICAga2VlcCB0aGUgcmVzb3VyY2UgcmVmZXJlbmNpbmcg
YW5kIHN5bmMgdXAgd2l0aCB0aGUgR1BVIHNpZGUgaWYgaXQgaGFzIHRvCisgICAgICAgIHJlbGVh
c2Ugc29tZSBvZiB0aGUgcmVtb3RlIHJlc291cmNlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6CisKKzIwMjAtMTAtMDkgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRo
ZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgd2lsbCBiZSBy
ZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHJlbW90ZSByZXNvdXJjZXMKKyAgICAgICAgaW5j
bHVkaW5nIHRoZWlyIGFjdHVhbCBsaWZlIGN5Y2xlLiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkgd2lsbCBiZSAKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSBJUEMgY29tbXVuaWNhdGlv
bnMgd2l0aCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLiBJdCB3aWxsCisgICAgICAgIGRlbGVnYXRl
IGFsbCB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudCB0byBpdHMgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LgorCisgICAgICAgIFdlIGNhbiBnZXQgcmlkIG9mIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eSBiZWNhdXNlIGFsbCBpdCBkb2VzCisgICAgICAgIGlzIHNlbmRpbmcgbWVz
c2FnZXMgdG8gV2ViUHJvY2Vzcy4gUmVtb3ZpbmcgaXQgd2lsbCBzaW1wbGlmeSB0aGUgaW50ZXJm
YWNlCisgICAgICAgIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFNlbmRpbmcgdGhlIG1lc3Nh
Z2VzIHdpbGwgYmUgbW92ZWQgdG8KKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjphcHBseSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VC
dWZmZXJEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VS
ZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDIwLTEwLTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogUmVwbGFjZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyIiBieSBhIGdlbmVyaWMgaWRl
bnRpZmllciBuYW1lZCAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR1BVIFByb2Nlc3MgbmVlZHMgYSB1bml2
ZXJzYWwgaWRlbnRpZmllciBmb3IgZHJhd2luZyBjYWNoZWQgcmVzb3VyY2VzIGFuZCAKKyAgICAg
ICAgZHJhd2luZyBidWZmZXJzIGFuZCBsYXllcnMuIFRoZSBtZWFuaW5nIG9mIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciB3aWxsCisgICAgICAgIGRlcGVuZCBvbiB0aGUgY29udGV4dCBpdCBpcyB1
c2VkIGluLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
SW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpn
ZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRD
b21taXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZl
ckZsdXNoQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnJlbGVhc2VJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisKIDIwMjAt
MTAtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVSBQcm9jZXNzXSBBZGQgYWRkaXRpb25hbCBzdXBwb3J0IGZvciBwYWludGluZyB2aWRlbyBl
bGVtZW50cyB0byAyRCBjb250ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTg0N2IwNWFiNDRl
NWNkNGE3MDZiZTMwOGM4YjY0NWI1MjU0MDBmZS4uYmYwN2EyNWI2YTkwNDZlOTEwODBmN2Q0MWU4
NWQ5MjI5NGM1Zjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTk0LDYgKzExOTQsNyBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdl
SW5mby5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xF
U1NoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC0xMjA3LDYgKzEyMDgsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0
VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2Ft
cGxlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2Q2MWUwNWIzNTc3MzA0YzE4M2M1MDNmODMx
ZWM4OTQxMDEwMDAyMS4uM2ZlMjlmOGJjZTg0YTI0YjY5NzZlZTBkNzMyZWJmZjQ1YmFhZWQzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjAwNyw3ICsyMDA3LDYgQEAKIAkJNkE3Mjc5OEIxRjE2QzI5QzAwM0YzOUI4IC8qIElu
c3BlY3RvclNoYWRlclByb2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZBNzI3OTg4MUYxNkMyOUIwMDNGMzlCOCAvKiBJbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtLmggKi87IH07CiAJCTZCMEEwN0YyMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0
cmlidXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZCMEEwN0YwMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0cmlidXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjFGNDgxMTIyOThB
MzdFMDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkIxRjQ4MEYyMjk4OUVDNDAw
REU4QjgyIC8qIENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2QjM0ODA5NDBFRUY1MEQ0MDBB
QzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNEQ0MTJE
MjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExv
Z2dlZEluU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNkI0RTg2MTMyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjRFODYxMjIy
MUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjUwN0EyNDIzNEJGMzQxMDBCRTdDNjIg
LyogTmF2aWdhdG9ySXNMb2dnZWRJbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkI1MDdBMjEyMzRCRjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9n
Z2VkSW4uaCAqLzsgfTsKQEAgLTIxNjEsNiArMjE2MCw5IEBACiAJCTcyN0E3RjNBMjQwNzhCODQw
MDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAv
KiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2
ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5
RDA1M0MyNTMyRUVFMzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyog
TmF0aXZlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3MjlEMDUzRDI1MzJFRjkxMDA0MjIwOTggLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTM5MjUzMkQy
RTcwMDQyMjA5OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmlt
YXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNB
RTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMg
LyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICov
OyB9OwpAQCAtOTQ4Nyw3ICs5NDg5LDYgQEAKIAkJNkIwQTA3RjAyMUZBNEI1QzAwRDU3MzkxIC8q
IEFkQ2xpY2tBdHRyaWJ1dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZENsaWNrQXR0cmlidXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkIwQTA3RjEyMUZBNEI1QzAwRDU3Mzkx
IC8qIEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZENsaWNrQXR0
cmlidXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjFGNDgwRjIyOTg5
RUM0MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dl
ZEluU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlZEluU3RhdHVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZCNEQ0MTJDMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0
YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnZWRJblN0YXR1cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNEU4NjEyMjIxQjcxM0YwMDIyRjM4OSAvKiBSZWdpc3Ry
YWJsZURvbWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RyYWJsZURvbWFpbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTkyMyw2ICs5OTI0LDggQEAKIAkJNzI3QUZFRDMxQTJF
QTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNS
R0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NDIzRDY4NkE2MDBD
QzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2
MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
cmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MkUyNTMxM0Uy
NjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzI5RDA1MzkyNTMyRDJFNzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlUHRyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFD
M0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdl
QnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1
ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTYyM0Ux
NzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjYyMjAsOCArMjYyMjMsOCBAQAogCQkJCTA3QjkzRkY5MjNCOTJBQUEwMDM2
RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi8sCiAJCQkJMzE0QkUzQTQxQjMxMDNGQjAwMTQxOTgy
IC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTUxQjMxMDNG
QjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovLAotCQkJCTZCMzQ4MDky
MEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovLAogCQkJCTU1QTMzNkY2MUQ4MjA5
RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAorCQkJCTcyOUQwNTM5MjUzMkQyRTcwMDQy
MjA5OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0
RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5o
ICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUu
Y3BwICovLApAQCAtMjYyMzksNiArMjYyNDIsNyBAQAogCQkJCTA3NEU4MkI5MThBNjlGMEUwMDdF
RjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4MDBE
OEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyog
UmVnaW9uLmggKi8sCisJCQkJNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllci5oICovLAogCQkJCTA3M0ExNTUxMjE3N0EzOTgwMEVBMDhGMiAvKiBSZW1v
dGVWaWRlb1NhbXBsZS5jcHAgKi8sCiAJCQkJMDczQTE1NTMyMTc3QTM5QTAwRUEwOEYyIC8qIFJl
bW90ZVZpZGVvU2FtcGxlLmggKi8sCiAJCQkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJl
bmRlcmluZ01vZGUuaCAqLywKQEAgLTMzMTY4LDcgKzMzMTcyLDggQEAKIAkJCQkzMTRCRTNBNzFC
MzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1h
Z2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUQwNTNDMjUzMkVFRTMwMDQyMjA5OCAvKiBOYXRp
dmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1M0QyNTMyRUY5MTAwNDIyMDk4IC8q
IE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBB
MDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMw
Qjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtMzM1NDEsNiArMzM1NDYsNyBAQAogCQkJCTQ2Qjk1MTlBMjA3RDYzNTQw
MEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZD
RDdDMDAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMz
MTJFQjIyRkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQy
NjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZD
MEQ4RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNDM5YjZh
OWQ3ZDgxMjBkOTFlMWUxYWZjNTZkMWFhZjZiZTBiNDllNC4uNjJmNTlkNjkyYjdmMzZkNjk5NTc0
YWQ1MGM4MThmOTk5NzNkNzI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAg
LTYwMSwxMCArNjAxLDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2Vk
KGNvbnN0IEltYWdlJiwgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0KIAorICAgIHZvaWQgZHJhd05h
dGl2ZUltYWdlKGNvbnN0IEltYWdlJiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgIH0KKwogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFn
ZSYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3Qg
SW1hZ2UmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZh
aWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCog
PSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdl
JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSBvdmVycmlkZSB7IH0KKwogICAgIHZvaWQgY2hhbmdl
ZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGUg
eyB9CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJy
aWRlIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApp
bmRleCA1Y2M5MzM4MzI1NzRkY2JlYmVkODJjMmMwYmNlOGYwMGMyYmNhNzJlLi44MmQyOTE5Yzgz
Y2E3YzQwYmViM2Y5MDJmOGM2Yzc4YmVlN2ViZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQxMSw2ICs0MTEsMTcgQEAgdm9pZCBDYWNoZWRJ
bWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6ZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdl
JiBpbWFnZSwgbG8KICAgICAgICAgY2FjaGVkSW1hZ2UtPmRlY29kZWRTaXplQ2hhbmdlZChpbWFn
ZSwgZGVsdGEpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZm9yIChh
dXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpIHsKKyAgICAgICAgaWYgKCZpbWFnZSAh
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucywgY2FjaGVkSW1hZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1h
Z2VPYnNlcnZlcjo6ZGlkRHJhdyhjb25zdCBJbWFnZSYgaW1hZ2UpCiB7CiAgICAgZm9yIChhdXRv
IGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCkBAIC00MzQsNiArNDQ1LDEyIEBAIHZvaWQg
Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVBdmFpbGFibGUoY29u
c3QgSW1hZ2UmIGltYWdlLCBJCiAgICAgICAgIGNhY2hlZEltYWdlLT5pbWFnZUZyYW1lQXZhaWxh
YmxlKGltYWdlLCBhbmltYXRpbmdTdGF0ZSwgY2hhbmdlUmVjdCwgZGVjb2RpbmdTdGF0dXMpOwog
fQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpuYXRpdmVJbWFnZVdp
bGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBu
YXRpdmVJbWFnZSkKK3sKKyAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdl
cykKKyAgICAgICAgY2FjaGVkSW1hZ2UtPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGltYWdl
LCBuYXRpdmVJbWFnZSk7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2
ZXI6OmNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0
KQogewogICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQpAQCAtNjg5
LDYgKzcwNiwxNiBAQCB2b2lkIENhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0
IEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSBhbgogICAgICAgICBtX2NsaWVudHNX
YWl0aW5nRm9yQXN5bmNEZWNvZGluZy5jbGVhcigpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpu
YXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSkKK3sKKyAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZElt
YWdlQ2xpZW50PiBjbGllbnRXYWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkSW1h
Z2VDbGllbnQqIGNsaWVudCA9IGNsaWVudFdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+
bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQobmF0aXZlSW1hZ2UpOworfQorCiB2b2lkIENhY2hl
ZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgSW50UmVjdCog
cmVjdCkKIHsKICAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDcyZDU5YzFmZjQ4NDVjMjMyNzU5MjBiYzhkMTJm
MjczNDMyN2Y3MmMuLjg2Nzk4MzJhNGNjMTBiYzY0ZjdhM2U1NGIyNTliZTUzZmE3MTI4ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xNDksMTAgKzE0
OSwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2Vk
KGNvbnN0IEltYWdlJiwgRW5jb2RlZERhdGFTdGF0dXMpIGZpbmFsOwogICAgICAgICB2b2lkIGRl
Y29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgZmluYWw7CisK
KyAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRHJhdyhjb25z
dCBJbWFnZSYpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNv
bnN0IEltYWdlJikgZmluYWw7CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25z
dCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3Qg
PSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5h
bDsKKyAgICAgICAgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYs
IGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgZmluYWw7CisKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5S
ZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgZmluYWw7CiAKQEAgLTE2NCw2ICsx
NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpOwogICAgIGJv
b2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJik7CiAgICAgdm9pZCBpbWFnZUZy
YW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0
dXM6OkludmFsaWQpOworICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3Qg
SW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChj
b25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKGNvbnN0IEltYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggYmE2NDQ1YjdlYTdlZDk2M2Q2MWJmZjMwZjI4YTlh
NGVkN2Y5YzEzNi4uMjFhYWYwN2YxYmI1ZDUzYjkyOTQyMjRiNjQ0MzcyYWJkMzUyYjAxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKQEAg
LTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiSW1hZ2VUeXBlcy5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNiArNDgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVk
IHdoZW4gYSBuZXcgZGVjb2RlZCBmcmFtZSBmb3IgYSBsYXJnZSBpbWFnZSBpcyBhdmFpbGFibGUg
b3Igd2hlbiBhbiBhbmltYXRlZCBpbWFnZSBpcyByZWFkeSB0byBhZHZhbmNlIHRvIHRoZSBuZXh0
IGZyYW1lLgogICAgIHZpcnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZh
aWxhYmxlKENhY2hlZEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogY2hhbmdlUmVjdCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBjaGFuZ2VSZWN0KTsgcmV0
dXJuIFZpc2libGVJblZpZXdwb3J0U3RhdGU6Ok5vOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF0
aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgTmF0aXZlSW1hZ2VQdHImKSB7IH0KKwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2Fj
aGVkSW1hZ2UmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgK
aW5kZXggYTE0MTNjNmY2NzliMTVlOTA3YzdiNmNmYTc2MDVmMjcwZTJmOTU1Ny4uNTc0NDdmZjFh
ZjA0NmM2NDhlODRkOTc2YWJmMDA2MTBiZjAwMjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTI0LDcgKzI0LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGI0
NzZhMzViODJkOTM3MDhkM2IwZjJiNGQxYTZkMjU0ODEyZDBlMTEuLjBhZjZjM2Q4YjIzMTg1MTc3
ODliMDcyMzQ1Zjk2NzQzYjFkN2Y2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJC
aXRtYXBJbWFnZS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0
cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTIwNCw2ICsyMDUs
MjQgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShCaXRtYXBJ
bWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQoreworICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVz
IGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KKyAgICBJbnRTaXplIHN1YnNh
bXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUobmF0aXZlSW1hZ2UpOworICAgIGlmIChv
cHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKKyAgICAgICAgc3Vic2Ft
cGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKKwor
ICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQg
aW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgorICAg
IEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1wbGVk
SW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qo
c3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBs
ZWRJbWFnZVNpemUpKTsKKworICAgIGlmIChpbWFnZS5pbWFnZU9ic2VydmVyKCkpCisgICAgICAg
IGltYWdlLmltYWdlT2JzZXJ2ZXIoKS0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBu
YXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShu
YXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1wdHkoKSkKQEAgLTI5
Miw5ICszMTEsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRp
b24gPSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdl
KGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKG9yaWVudGF0
aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFn
ZSgqdGhpcywgY29udGV4dCwgaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUo
b3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwg
SW50U2l6ZShzaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UoKnRoaXMsIGNvbnRleHQsIGltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShz
aXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGlu
Z1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIApA
QCAtMzc5LDcgKzM5OCw3IEBAIFN1YnNhbXBsaW5nTGV2ZWwgQml0bWFwSW1hZ2U6OnN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZUZhY3RvcihHcmFwaGljc0NvbnRleHQmIGNvCiB7CiAjaWYgVVNFKENH
KQogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBE
RiBjb250ZXh0cy4KLSAgICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpKSA9PSBrQ0dDb250ZXh0VHlwZVBERikKKyAgICBpZiAoY29udGV4dC5oYXNQbGF0Zm9y
bUNvbnRleHQoKSAmJiBDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkp
ID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICByZXR1cm4gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3RkOjptaW4oZmxvYXQoMSksIHN0ZDo6bWF4
KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9yLmhlaWdodCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCA1NTVjYzY2NDU3MGEzNGJlYTk5NWRlY2NkNTJhYzg2MWY1ZmUzMTQ0Li43MTEzZDdmNjRlMWE3
NjI4OTgxZmMwOTk2ZmQ2OGQ4Njg1MjZiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTczMSw2ICs3MzEsMTkg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKQoreworICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2ltcGwpIHsKKyAgICAg
ICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICBy
ZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUo
KSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdP
cHRpb25zKTsKQEAgLTc0Nyw3ICs3NjAsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbgogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6
OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmIChtX2ltcGwgJiYgaW1hZ2Uu
aXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShp
bWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMs
IG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CkBAIC03NTksNyArNzcyLDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkK
KyAgICBpZiAobV9pbXBsICYmIGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICBy
ZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwg
dGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25z
LmludGVycG9sYXRpb25RdWFsaXR5KCkpOwpAQCAtNzcyLDcgKzc4NSw3IEBAIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYg
KG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1f
aW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2Fs
ZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zKTsKIAogICAgIGlmIChoUnVsZSA9PSBJbWFn
ZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CkBAIC03OTks
NiArODEyLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+ZHJh
d0ltYWdlQnVmZmVyKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9s
YXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFs
aXR5KCkpOwogICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlv
bnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAppbmRleCBkYjRjMDAyZWNjZDIyZTZmZTk0MDg3YzY5ZjkxMjhkNDI4OTkyN2Jm
Li4yNTE5ZDdiZWExODIxOTg3ZjcxYmE3MGY0NDFmMmZmYjA1ZDJiZjAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODYs
NiArODYsNyBAQCBjbGFzcyBHbHlwaEJ1ZmZlcjsKICNlbmRpZgogCiBjbGFzcyBBZmZpbmVUcmFu
c2Zvcm07CitjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFz
cyBHcmFkaWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEltcGw7CkBAIC0zMzQsMTAgKzMzNSw2
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAotI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8
fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSk7Ci0jZW5kaWYKLQogI2lmIFVTRShDRykgfHwgVVNFKERJUkVD
VDJEKQogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAgdm9pZCBhcHBseUZpbGxQ
YXR0ZXJuKCk7CkBAIC0zODMsNiArMzgwLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9LCBDYWNoZWRJbWFnZSogPSBudWxscHRyKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIElt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpG
cm9tSW1hZ2UgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CkBAIC02NTIsNiArNjUxLDggQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7CiAKKyAgICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpOworCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRz
QW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGlu
ZywgQ29sb3ImKTsKIAogICAgIGZsb2F0IGRhc2hlZExpbmVDb3JuZXJXaWR0aEZvclN0cm9rZVdp
ZHRoKGZsb2F0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzZDUwNzViY2VkY2JmNTAyODcxY2Q1
NTA5MzVmNTFhYzhkYjJmNTVjLi5mNDRkOWU1NDNhMzk0NDAzOWZlOThmZTM0YzA4MzI5NTkzNGMy
ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5oCkBAIC03Miw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwg
VVNFKERJUkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgPSAwOwotI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IGQzOWZlYWE4MmYzNzFjZjhh
YWY3NmQyN2YzMzU3M2YzNTE5OGQwODkuLmVhNGQ2M2E5NGVkNmNmMDIyM2ZkOWVhMDUwODhhMzdi
ZDcxMmQ2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAt
MzIsOCArMzIsOSBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VQ
YWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCi0jaW5jbHVkZSAiTmF0
aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KQEAgLTcyLDcgKzczLDYgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLXN0
cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xh
c3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2Rl
ZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGQxNDY0OTJj
NGE4ZGY5MzVjYWY5NGI5ZmI5NTU5MDlhYWQxY2JhZjAuLmRiZTAyNWVlOWUxYTQ0MGYwMmVhOTY2
NGEzNGY5OGEwZjZjNTFhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBEcmF3
aW5nQ29udGV4dDsKIH0KIApAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IERpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmKSB7IH0KIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zv
cm0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3Qg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaAppbmRleCBjMDEwYTBmMGNmY2Q4YzVlN2FiNmM5NGM1YzNjMzZmNDgzODZk
MDFmLi41OGZjMTQ4MzZkOTJhYTIwMDE5ZjIwZmVlZGM1NTcxZTlhYjVlOTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aApAQCAtMzEsMTMgKzMxLDE0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5j
bHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogY2xhc3MgSG9zdFdpbmRvdzsK
IGNsYXNzIEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VPYnNlcnZlci5oCmluZGV4IDhiMDg5ZTU5NGMxYWZjY2VlNGZmYjUwNzExNTk3ODc0Njk1Y2Iy
ZGUuLmI0ZDcxMGFjNjczMGM4NWRmZWVhNzVlYWIwZjNkYjY2NzZmNjBmMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTQ1LDEw
ICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hh
bmdlZChjb25zdCBJbWFnZSYsIEVuY29kZWREYXRhU3RhdHVzKSB7IH07CiAgICAgdmlydHVhbCB2
b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgPSAw
OwogCisgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYsIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERyYXcoY29uc3QgSW1hZ2UmKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuRGVzdHJveURl
Y29kZWREYXRhKGNvbnN0IEltYWdlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1l
QXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVj
dCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6
OkludmFsaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95
ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpID0gMDsKKwogICAgIHZpcnR1
YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogY2hhbmdl
UmVjdCA9IG51bGxwdHIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoY29uc3QgSW1hZ2UmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc3NTAzMjIzOWE1ZDVhYmFhNzYzZjdh
MjYzZWQ3Y2IyNDU5ODI2NTIuLjQ1NTE1YzU5YTFmZjI4NGNkOGQyODAzODM3YjA4NWI1MDIyZDZj
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKQEAgLTEzMCw4ICsxMzAsMTAgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29k
ZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKQogICAgIEFTU0VS
VChmcmFtZUNvdW50IDw9IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgZnJhbWVDb3VudDsgKytpbmRleCkgewotICAgICAgICBpZiAoaW5kZXgg
PT0gZXhjbHVkZUZyYW1lKQorICAgICAgICBpZiAoaW5kZXggPT0gZXhjbHVkZUZyYW1lIHx8ICFt
X2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkpCisgICAgICAgICAg
ICBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCktPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKCpt
X2ltYWdlLCBtX2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSk7CiAgICAgICAgIGRlY29kZWRT
aXplICs9IG1fZnJhbWVzW2luZGV4XS5jbGVhckltYWdlKCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCA2YjJkODFlMzVi
MDhjZjc0ZjRmMzYxYWViYzc0ZjMxMjljN2Q5YjdmLi40MzM3ODc5MGIyMjkxZWEwMGIxMjA4ZTBh
NWNiYzk3MjlmNzcxZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLgogICoKQEAgLTI3LDUyICsyNywxNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCi0KLSNpZiBV
U0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFn
ZSogQ0dJbWFnZVJlZjsKLSNlbGlmIFVTRShDQUlSTykKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5o
IgotI2VsaWYgVVNFKFdJTkdESSkKLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKLSNlbmRpZgot
Ci0jaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgPGQyZDEu
aD4KLSNpbmNsdWRlIDx3aW5jb2RlYy5oPgotI2VuZGlmCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQ
dHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEZsb2F0
UmVjdDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci0KLSNpZiBVU0Uo
Q0cpCi10eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlm
IFVTRShESVJFQ1QyRCkKLXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0
cjsKLSNlbGlmIFVTRShDQUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0
aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0
bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIG5h
dGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogYm9vbCBuYXRpdmVJbWFnZUhh
c0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotCi12b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBzY2FsZUZhY3RvciwgY29u
c3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpOwotCiB2b2lk
IGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLQotY2xh
c3MgTmF0aXZlSW1hZ2VIYW5kbGUgewotcHVibGljOgotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdl
OwotfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3NTE0
MDcxZDA3Yzk1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0Uo
Q0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSog
Q0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgor
I2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit0eXBlZGVmIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK3R5cGVkZWYgQ09N
UHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShDQUlSTykKK3R5cGVk
ZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBVU0UoV0lO
R0RJKQordHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbmRp
ZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhZjU0MmRmZWM4NDdhYmMz
NzFhYTJmMWU4ZTRiOGRkOWZiMTEwZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAtMCwwICsx
LDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2VudW0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZVJlc291cmNl
SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYTEw
NDY1NmNiNWQ1ZGRlYTAzMjFkYWE0NGEwNDQ2NTE3NTA4OGU0Zi4uMmFiOWNlM2JiYTI1ZWE1NDg1
NDQ4ZjM0YWE3NzdhZmUwNGU3MzRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApA
QCAtMTIzLDE2ICsxMjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3
UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmls
bENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1f
aW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQbGF0
Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENh
aXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVz
dFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBiNjViNGQ2NDQwNmJlYjc2YzQwOWQzZThj
NjU0OTc1Y2E5ZjdlYjYzLi4wNDg2NDI4NTFmOWQ3YjhjMzlmMWRjOTg1MzQ4M2QwYjY4ZWE1ZGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI4Niw2ICsyODYs
MTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnMKICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0
aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fp
cm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8gRklY
TUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCBlNWUyMDc0OGM2ZDc2MjBmMTBj
ZjIxNTY2MjhlZjdlMGJlNjAxYzdiLi5kMzBiZjg2OWQ3NDYyZWY4OWU0Y2ExOGExNGYwMTI2ZmJh
NjE5NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzQsNyArNzQs
OSBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJ
bWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisK
ICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVhMzdjNzg2ZWY2
ZGI2ZTVhZmViOTE3Nzk4ZmE1MzFiZjk4YWM4NGQuLmMyOTJkYjQyY2MwZjlmMGY5YzQ3Yzc4ZWQ2
OWMyZDgzMzFjOTgyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4MCwxNiArMjgwLDExIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRh
LT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENH
SW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
aW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
ICNpZiAhTE9HX0RJU0FCTEVECiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAppbmRleCA1Y2M1YzIwN2I0NGE0ODM1YmUy
ZTA4MDI4YTNhNzEwOTVhNTVlMWUwLi40MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRl
YmRhZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9O
YXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgog
I2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKQEAgLTY5LDQwICs2OCw2IEBAIENv
bG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKICAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFsw
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAq
IDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewot
ICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21h
bGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRp
dmVJbWFnZVNpemUoaW1hZ2UpOwotICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dp
ZHRoQXNIZWlnaHQoKSkKLSAgICAgICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJ
bWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKLQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNv
b3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0
IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3Qg
PSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0gICAg
ICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3Jj
U2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKLX0KLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3Qm
IHNvdXJjZSkKLXsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKTsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAgICBD
R0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCks
IGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOwotICAg
IENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBpbWFn
ZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7Ci0g
ICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNj
YWxlRmFjdG9yOwotCi0gICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJj
ZS54KCk7Ci0gICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnko
KSArIHNvdXJjZS55KCk7Ci0KLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1Jl
Y3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQo
KSk7Ci0KLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Ci19Ci0KIHZvaWQg
Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7
CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGE2MzgzNjky
MWQ4ZGZjYTE2NjM4YmQ4NmFhOTMzZWZhN2UyNjRkODEuLmIzNTg5M2M1ODJlNDE3YzJiYjMzNTJh
NTE2ZTNjYjU5ZmUwMjQzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02Miw4ICs2Miw5
IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3SW1hZ2UsCiAgICAg
RHJhd1RpbGVkSW1hZ2UsCiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENHKSB8
fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIERyYXdJbWFnZUJ1ZmZlciwKICNlbmRpZgogICAgIERy
YXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd2luZ0NvbnRleHQuY3BwCmluZGV4IDIzY2MwN2U4YWU0NDJiZGNlYTBkMzY3NGE1YTg1
NTFjNjVjZmRjODcuLmQ0NjE3ZDM1MTZmNGYzZTUxZDc1ZDY0NDM0YTZhMzk0NTdhMDAwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKQEAg
LTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpP
YnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RN
LCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KFsmXShHcmFw
aGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0s
IG9ic2VydmVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlM
aXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRS
ZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBkZWxlZ2F0ZSk7CiAgICAgfSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmluZGV4
IDdiNjczZjMyYWQ4MTVhNTAwODFiN2U3YWIxMDgxMzE3MTdmZGU1NDMuLjIyZWQyNTZlODBhZDI5
M2EwNTIwNjliNzQzMDg4YTEzNTFmNDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QgewogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9
IHsgfSwgUmVjb3JkZXI6Ok9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JU
IERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51bGxw
dHIpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29u
c3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBSZWNvcmRlciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlci5oCmluZGV4IDZmZDkxMmRmYjhmZTExYzA5OGRkNjEyNmE4Yzg3OGFjNmJh
N2FlMDIuLjMyNTk5ZTA2MmQ3Y2Y1OWQxZGMyZWFkMDFlNzYwZDY2ZTNmN2VjM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRl
SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVyIHsKK2Ns
YXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+
IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZm
ZXI8QmFja2VuZFR5cGU+OwogCiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGljOgog
CiAgICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNr
ZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChz
aXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAgICwgbV9k
cmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCiAgICAg
ewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAg
ICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXpl
KSwgdGhpcykKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29yZGVy
OjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IG1fZHJhd2luZ0NvbnRl
eHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkKICAgICB7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMThkNzBj
ZmJkMjQwOTg1ODY4NDQ5ZmIzNTlhOWY4NWViZGZkMzYzNi4uZjE1Yzc3MGUxZGE0ZDUxZjVmYTQ2
NjFlN2M1MGQ3NDA0ZjM0YWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAi
SW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBVU0UoQ0cp
CkBAIC0xMDYsOSArMTA1LDExIEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVt
JiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZEltYWdlPihp
dGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAgICAg
IHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0pKTsKLSNp
ZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVt
KSk7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+
KGl0ZW0pKTsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAg
ICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CkBAIC03MDMsMzIg
KzcwNCwyMiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi0j
aWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLURyYXdOYXRpdmVJbWFn
ZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3
TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCi0jaWYg
VVNFKENHKQotICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBDYWlyby4K
ICAgICAsIG1faW1hZ2UoaW1hZ2UpCi0jZW5kaWYKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6
ZSkKICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNy
Y1JlY3QpCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKIHsKLSNpZiAhVVNFKENHKQotICAgIFVO
VVNFRF9QQVJBTShpbWFnZSk7Ci0jZW5kaWYKIH0KIAogRHJhd05hdGl2ZUltYWdlOjp+RHJhd05h
dGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotI2lmIFVTRShDRykKLSAgICBjb250ZXh0
LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3Qs
IG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OwotI2VuZGlmCisgICAgQVNTRVJUKG5hdGl2ZUltYWdlUHRyKCkpOworICAgIGNvbnRleHQuZHJh
d05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlUHRyKCksIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
UmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQpAQCAt
NzM5LDYgKzczMCwzMyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CiAgICAgcmV0dXJuIHRzOwogfQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorRHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1hZ2VCdWZm
ZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXIpCisgICAgLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcihyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkK
KyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9
CisKK0RyYXdJbWFnZUJ1ZmZlcjo6fkRyYXdJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKKwordm9p
ZCBEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAg
Ly8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzIDw8IHN0YXRpY19jYXN0
PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUt
cmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOwor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0
cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAg
IHJldHVybiB0czsKK30KICNlbmRpZgogCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTQ2OSw4ICsxNDg3LDkgQEAgc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTogdHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2Ui
OyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogdHMgPDwg
ImRyYXctdGlsZWQtc2NhbGVkLWltYWdlIjsgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJ
Uk8pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRp
dmUtaW1hZ2UiOyBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsK
ICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0
ZXJuIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJl
Y3QiOyBicmVhazsKQEAgLTE1NzEsMTAgKzE1OTAsMTMgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2Nh
bGVkSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlS
TykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGRv
d25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAg
ICAgIHRzIDw8IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oaXRlbSk7CisgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8
IGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCmluZGV4IGNiNjg0ZDIzY2U3NWI0ZmFiOWVjNDEzMTYyN2FjZDMyZDYyNGFlZGIuLjNiNjRk
M2JhMzQwNzU0NjAzMWVlOWJiMGNhYTMyNzY1OWY5NTRkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIK
KyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAgLTE0MzIsMzIgKzE0MzMs
NTIgQEAgT3B0aW9uYWw8UmVmPERyYXdUaWxlZFNjYWxlZEltYWdlPj4gRHJhd1RpbGVkU2NhbGVk
SW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKICAgICByZXR1cm4gRHJhd1RpbGVkU2NhbGVk
SW1hZ2U6OmNyZWF0ZSgqaW1hZ2VIYW5kbGUtPmltYWdlLCAqZGVzdGluYXRpb24sICpzb3VyY2Us
ICp0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgKmltYWdlUGFpbnRpbmdPcHRpb25zKTsK
IH0KIAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiBjbGFzcyBE
cmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgdXNpbmcgTmF0aXZlSW1hZ2VUeXBl
ID0gVmFyaWFudDxOYXRpdmVJbWFnZVB0ciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKwor
ICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlbW90ZVJl
c291cmNlSWRlbnRpZmllcj4obV9pbWFnZSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPihtX2ltYWdlKTsK
KyAgICB9CisKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZVB0cigpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TmF0aXZlSW1hZ2VQdHI+KG1f
aW1hZ2UpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6
OmdldDxOYXRpdmVJbWFnZVB0cj4obV9pbWFnZSk7CisgICAgfQorI2Vsc2UKKyAgICB1c2luZyBO
YXRpdmVJbWFnZVR5cGUgPSBOYXRpdmVJbWFnZVB0cjsKKworICAgIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQorI2VuZGlmCisgICAgc3Rh
dGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogICAg
IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpOwogCisg
ICAgRmxvYXRTaXplIGltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAg
ICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZs
b2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVj
dDsgfQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X29wdGlvbnM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAg
IFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAg
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotI2lmIFVTRShDRykK
LSAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwotI2VuZGlmCisgICAgTmF0aXZlSW1hZ2VUeXBl
IG1faW1hZ2U7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rl
c3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTQ2NywxMCArMTQ4
OCw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotI2lmIFVTRShDRykKLSAg
ICBOYXRpdmVJbWFnZUhhbmRsZSBoYW5kbGUgeyBtX2ltYWdlIH07Ci0gICAgZW5jb2RlciA8PCBo
YW5kbGU7Ci0jZW5kaWYKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2U7CiAgICAgZW5jb2RlciA8PCBt
X2ltYWdlU2l6ZTsKICAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OwogICAgIGVuY29k
ZXIgPDwgbV9zcmNSZWN0OwpAQCAtMTQ4MCwxMiArMTQ5OCwxMCBAQCB2b2lkIERyYXdOYXRpdmVJ
bWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgogT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0jaWYgVVNFKENHKQotICAgIE9wdGlvbmFsPE5hdGl2
ZUltYWdlSGFuZGxlPiBoYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgaWYgKCFo
YW5kbGUpCisgICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VUeXBlPiBpbWFnZTsKKyAgICBkZWNvZGVy
ID4+IGltYWdlOworICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0jZW5kaWYKIAogICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1hZ2VTaXplOwogICAgIGRlY29k
ZXIgPj4gaW1hZ2VTaXplOwpAQCAtMTUwNywxNCArMTUyMyw3NSBAQCBPcHRpb25hbDxSZWY8RHJh
d05hdGl2ZUltYWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBpZiAoIW9wdGlvbnMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSNpZiBV
U0UoQ0cpCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBoYW5kbGUtPmltYWdlOwotI2Vsc2UK
LSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IG51bGxwdHI7Ci0jZW5kaWYKLSAgICByZXR1cm4g
RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJl
Y3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CisgICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3Jl
YXRlKCppbWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRp
b25zKTsKIH0KLSNlbmRpZgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorY2xhc3MgRHJhd0lt
YWdlQnVmZmVyIDogcHVibGljIERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PERyYXdJbWFnZUJ1ZmZlcj4gY3JlYXRlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdJbWFnZUJ1ZmZlcihyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKTsKKyAgICB9
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3SW1hZ2VCdWZmZXIoKTsKKworICAg
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsgfQorICAgIEZsb2F0UmVjdCBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGlu
YXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFn
ZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3SW1h
Z2VCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJl
Y3Q7IH0KKworICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRl
bnRpZmllcjsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgRmxvYXRSZWN0
IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9OworCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9yZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBlbmNvZGVy
IDw8IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fb3B0aW9uczsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBEcmF3SW1hZ2VC
dWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFJlbW90ZVJl
c291cmNlSWRlbnRpZmllcj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIg
Pj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlm
ICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IHNvdXJjZTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZTsKKyAgICBpZiAo
IXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPElt
YWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAg
ICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gRHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUoKnJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgKmRl
c3RpbmF0aW9uLCAqc291cmNlLCAqb3B0aW9ucyk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJs
aWM6CkBAIC0yOTczLDEwICszMDUwLDEzIEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KCp0aGlzKTsK
ICAgICAgICAgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1Qy
RCkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIGVuY29kZXIg
PDwgZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6
CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPigqdGhpcyk7Cisg
ICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KCp0aGlzKTsKQEAgLTMxNjQs
MTEgKzMyNDQsMTUgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdUaWxlZFNjYWxlZEltYWdlOjpk
ZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBV
U0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShk
ZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4o
V1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBpZiAoYXV0byBp
dGVtID0gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAg
YnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAg
aWYgKGF1dG8gaXRlbSA9IERyYXdQYXR0ZXJuOjpkZWNvZGUoZGVjb2RlcikpCkBAIC0zMzI2LDgg
KzM0MTAsOSBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ds
eXBocykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2Up
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkSW1hZ2Up
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkU2NhbGVk
SW1hZ2UpCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQorI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZm
ZXIpCiAjZW5kaWYKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3
UGF0dGVybikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3UmVj
dCkKQEAgLTMzODgsOCArMzQ3Myw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3SW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3VGlsZWRJbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdUaWxlZFNjYWxlZEltYWdlLAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElS
RUNUMkQpCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2UsCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAogI2VuZGlmCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CmluZGV4IGRkMzVlZjFhMjhhOTA3MWRhZWY5YTBhOGQ3N2Q5ODQwMWVhMDgwMWQuLjk1NTc1ZDBm
NDE0YzJlZGU1ZjE5MTAyMDA2ZTM2ZjVkODQ0YTQ3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM3LDEwICszNywxMCBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgT2JzZXJ2ZXIqIG9ic2VydmVyKQorUmVj
b3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRGVs
ZWdhdGUqIGRlbGVnYXRlKQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBpbml0
aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlM
aXN0KQotICAgICwgbV9vYnNlcnZlcihvYnNlcnZlcikKKyAgICAsIG1fZGVsZWdhdGUoZGVsZWdh
dGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJl
Y29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7CiAgICAgbV9zdGF0ZVN0YWNrLmFw
cGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKQEAgLTUyLDE1ICs1Miwx
NSBAQCBSZWNvcmRlcjo6flJlY29yZGVyKCkKICAgICBMT0coRGlzcGxheUxpc3RzLCAiUmVjb3Jk
ZWQgZGlzcGxheSBsaXN0OlxuJXMiLCBtX2Rpc3BsYXlMaXN0LmRlc2NyaXB0aW9uKCkuZGF0YSgp
KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6cHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VE
YXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3Jt
YXQpCit2b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBp
bnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24g
ZGVzdEZvcm1hdCkKIHsKLSAgICBhcHBlbmRJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJ
bWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9p
bnQsIGRlc3RGb3JtYXQpKTsKKyAgICBhcHBlbmRJdGVtKFB1dEltYWdlRGF0YTo6Y3JlYXRlKGlu
cHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCkpOwog
fQogCiB2b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJiBpdGVtKQogewot
ICAgIGlmIChtX29ic2VydmVyKQotICAgICAgICBtX29ic2VydmVyLT53aWxsQXBwZW5kSXRlbShp
dGVtKTsKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVu
ZEl0ZW0oaXRlbSk7CiAKICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkKICNpZiBVU0UoQ0cp
CkBAIC0xMzIsMTIgKzEzMiwyOSBAQCBJbWFnZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdUaWxl
ZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdAogICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlY29yZDsKIH0KIAotI2lmIFVTRShDRykgfHwgVVNFKENB
SVJPKSB8fCBVU0UoRElSRUNUMkQpCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UpCiB7CisgICAgaWYgKG1fZGVsZWdhdGUgJiYgY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAg
aWYgKGF1dG8gaXRlbSA9IG1fZGVsZWdhdGUtPmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oaW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsICpjYWNoZWRJbWFnZSkp
IHsKKyAgICAgICAgICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PERyYXdpbmdJdGVtPihpdGVtLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50
KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKSk7CiB9Ci0jZW5kaWYKKworYm9vbCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQoreworICAgIGlmICghbV9kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGF1dG8gaXRlbSA9IG1fZGVsZWdhdGUtPmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKSB7CisgICAgICAgIGFwcGVuZEl0ZW1B
bmRVcGRhdGVFeHRlbnQoc3RhdGljX3JlZmVyZW5jZV9jYXN0PERyYXdpbmdJdGVtPihpdGVtLnJl
bGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCA5ZWUxZDM5MzhmMjMyZjNmMThkOTc4YWY3MTg3MDFkOGJlNDYzMDcyLi5lMTQwYmUxMWQ3ZDZh
NzY2Njc5NjE1NjlkMTQ1YzRlMzM4NWMzZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTI4LDEyICsyOCwxNCBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbC5oIgogI2luY2x1ZGUgIkltYWdlLmgiIC8v
IEZvciBJbWFnZTo6VGlsZVJ1bGUuCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIDogdWludDhfdDsKK2NsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgRmxvYXRQb2ludDsKIGNs
YXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdseXBoQnVmZmVyOwpAQCAtNTMsOCArNTUsOCBAQCBjbGFz
cyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRJbXBsIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJs
aWM6Ci0gICAgY2xhc3MgT2JzZXJ2ZXI7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3Jh
cGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIE9i
c2VydmVyKiA9IG51bGxwdHIpOworICAgIGNsYXNzIERlbGVnYXRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwg
Y29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsKQEAgLTYzLDkgKzY1LDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChSZWY8RHJhd2luZ0l0ZW0+JiYp
OwogCi0gICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgfkRl
bGVnYXRlKCkgeyB9CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEl0ZW0+IGNyZWF0ZURyYXdJbWFn
ZUJ1ZmZlckl0ZW0oSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICAgICAgdmlydHVhbCBSZWZQdHI8SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgQ2FjaGVkSW1hZ2Um
KSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRl
bShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CiAKQEAgLTEwNCw5ICsxMDgsOSBAQCBwcml2YXRl
OgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7Ci0jZW5kaWYKKworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9h
dFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwpAQCAtMTg4LDcgKzE5Miw3
IEBAIHByaXZhdGU6CiAgICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAogICAgIERp
c3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIE9ic2VydmVyKiBtX29ic2VydmVyOworICAg
IERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgMzI+IG1f
c3RhdGVTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKaW5kZXggZjMxZDM3NWIwMmRhMDk3OTI4OWFjYzIwMGRkODYyZmFlMTM0MTA0Yi4uNGI1
ZTNlNDNiMDM5NjRhNTFjMjczZTViZTdhZWRiMGRmMWFhOTFmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNYWluVGhyZWFkTm90aWZpZXIuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDE4YjRm
OGRlOTcxNzBjZTY0NGViNjRiZTNlYWI4NTdmM2E3NDMyZjQuLjYyOThjZjM2MDczYzdhZTQ0ZjQz
YzZiNTY0NDIyYjM3Yjg2Y2YxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlclBpcGUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1
ZGUgIk5pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgogI2luY2x1ZGUgIk5p
Y29zaWFQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAKaW5kZXggMzA0ZmFjYmFiMTUyMTc5MWRhYTg2ZGIxNTMxNzUzZTM4
NjcxMDg0ZC4uNGUyNGVlYmFkYjY1ODdiYWM2MmExZjE1ZDUxZjZmODc2Y2RiYjQ4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAKQEAgLTU3MCw2ICs1NzAsMTIgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdAogICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4o
aW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0
aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWly
bzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1F
OiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0
aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9h
dFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxvYXRQb2ludCwgSW1hZ2VQYWludGluZ09wdGlvbnM+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaAppbmRleCA1NzJmZjIxNjZmNmU5NzNhNzYzYjY3Y2I2YmI5NmY0M2YyNmE4ZDUwLi4zODA5
M2Q0MTM1YjRkN2I2NTExYTE2MDg3YWZmMTNmNjAzZWQxM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02Nyw2ICs2Nyw4
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShXZWJD
b3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6Oklt
YWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2Vi
Q29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJ
bWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CisKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6Oklt
YWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3Bw
CmluZGV4IDM3NDA3MTcxNWJjYjc5MWQ1ODlkNTBkOTliMjljNjZiMDEwYjcwODEuLjU3YmE4NThm
Zjk5YzJkYjI5ZjVkOTE0OTJlNmFhYzhlZDk3NGVjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERp
cmVjdDJELmNwcApAQCAtMjA3LDE2ICsyMDcsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJl
c3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBEaXJlY3QyRDo6cmVzdG9yZSgqcGxhdGZvcm1Db250
ZXh0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0
IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0
YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0
Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMjQ3YTdhZDRjZDI5NTM4ZTRlYWY0MGJkODAzNjk2ODYw
MDhiODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAi
UmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci0KLVJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6UmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHko
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICwgbV9pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotewotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eTo6Y3JlYXRlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUp
Ci17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuc2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRs
ZSksIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkucmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJG
bHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNvbW1p
dEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllciwgbV9pbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcigpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZDA1ZWFlZjU0OTQxNmZk
YjY0MjU5NTJlMGI0Y2YzYWEyMDVlYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZS5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVy
LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWVudW0gY2xh
c3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci1jbGFzcyBJbWFnZURhdGE7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk7Ci0KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCkg
PSBkZWZhdWx0OwotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCi0gICAgdmlydHVhbCB2b2lkIGZsdXNo
RHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgot
ICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotCi0gICAgLy8gTWVzc2FnZXMg
dG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCi0gICAg
dm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7Ci0gICAg
dm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIpOwotCi0g
ICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBiYWNrZW5kKCkgeyByZXR1cm4gbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7IH0KLQotcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotICAgIEltYWdl
QnVmZmVySWRlbnRpZmllciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKaW5kZXggNzcyMWNjZTg0NTYyNjlhZWY5MDIwYjhiZDg5NjVkZDM1YjcyMmRkYy4u
MWQxYjVlZThmY2YwN2VmYzMyOWQ3OTgxZjNiMGExYWMyZWZiZTcxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCkBAIC0yOCwyOSArMjgsMjkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0
ZUltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4K
LWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6Q29uY3JldGVJ
bWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHksIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVn
YXRlIHsKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6Q29u
Y3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OkRlbGVnYXRlIHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5n
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0OwogICAgIHVzaW5nIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CisgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZm
ZXI6OnB1dEltYWdlRGF0YTsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVm
ZmVySWRlbnRpZmllcikKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHksIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PihzaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSwgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oc2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2Vu
ZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHksIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2Vu
ZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHksIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5k
KSkKLSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkocmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgICAgICwg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQogICAgIHsKLSAgICAgICAgY3JlYXRlQmFja2VuZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCks
IG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwg
bV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKCkpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW1v
dGVDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2Jh
Y2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFj
a2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSgpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIH5SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5KCkKQEAgLTYyLDkgKzYyLDYgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5nQ29u
dGV4dDsKLSAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwot
CiAgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAo
ZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpIHsKQEAgLTczLDE4ICs3MCw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQo
Y29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7Ci0gICAgICAgIG1fYmFj
a2VuZC0+Zmx1c2hDb250ZXh0KCk7Ci0gICAgICAgIGNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElk
ZW50aWZpZXIpOwotICAgIH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZv
cm1hdCwgc3JjUmVjdCk7Ci0gICAgfQotCiAgICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKSB7CkBAIC05OCwxMiArODMsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuYXBw
bHlSZXNvdXJjZUl0ZW0oaXRlbSwgY29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhJiBpdGVtLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgewotICAgICAgICBhdXRvIHByb2Nlc3MgPSBi
YWNrZW5kKCkuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOworICAgICAgICBhdXRvIHByb2Nl
c3MgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCk7CiAgICAgICAgIGlmICghcHJvY2VzcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
MTE3LDYgKzEwMiw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgY29udGV4dC5wYWludEZyYW1lRm9y
TWVkaWEoKnBsYXllciwgaXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICB9CisKKyAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CmluZGV4IDc1M2E1YzhiYTk3ZmU3MjA4MzEwNThlODRjNWNkODNiNGIxNzU1NzkuLmMxYTMxY2Jj
OTRiNjA2YjUwZDQxZjk5YzUwMjI3MDRkZWFlZDczOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1l
c3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNiArNTQsMTEgQEAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Ojp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkKICAg
ICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKIH0KIAorR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCiBJUEM6OkNvbm5l
Y3Rpb24qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdAogewogICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0g
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQpAQCAtNjYsNjQgKzcxLDQ2IEBAIHVp
bnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRv
VUludDY0KCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorYm9vbCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKERpc3BsYXlMaXN0OjpJ
dGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byogZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsK
LSAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuY29udGFpbnMoaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6
OlJlbW90ZUFjY2VsZXJhdGVkKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gQWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMsIGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsK
LSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdN
b2RlOjpSZW1vdGVBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6
OlJlbW90ZVVuYWNjZWxlcmF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
KSB7Ci0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdl
QnVmZmVySWRlbnRpZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmFwcGx5UmVzb3VyY2VJdGVtKGl0ZW0s
IGNvbnRleHQpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFz
ZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBt
ZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJv
b2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKGltYWdlQnVm
ZmVySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgV1RGTW92ZShoYW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1h
Z2VCdWZmZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRh
UmVmZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikp
IHsKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKG91
dHB1dEZvcm1hdCwgc3JjUmVjdCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1h
Z2VEYXRhUmVmZXJlbmNlKFdURk1vdmUoaW1hZ2VEYXRhKSkpOwotICAgIH0KKyAgICBtX3JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcmVhdGVJbWFnZUJ1ZmZlcihsb2dpY2FsU2l6ZSwgcmVuZGVy
aW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFn
ZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50
aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZl
ckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVm
ZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICBtX3JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyIGZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVy
SWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdl
QnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1
c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1
ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgZmx1c2hJZGVu
dGlmaWVyKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5mbHVzaERyYXdpbmdDb250
ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVy
Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllciwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpIGNvbnN0Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VE
YXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3Jl
OjpJbnRSZWN0IHNyY1JlY3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVu
Y2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5nZXQoKTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlLCBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4
IGEwOTUyYmFmYjNjMTUzMmQ3ZGM5OTAwNmViNDBmMzFiZjkxZDI1M2IuLmFmOTYyNjJkYzMwN2Iz
NDdlYjJhZGVmZDAzNzVhNWY0N2IzMjZjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgKQEAgLTI4LDI0ICsyOCwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdl
QnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNp
bmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXpl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiB9CitjbGFzcyBG
bG9hdFNpemU7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFzcyBS
ZW5kZXJpbmdNb2RlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw4
ICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyOyB9CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcygpIGNvbnN0OworICAgIGJvb2wgYXBwbHlSZXNvdXJjZUl0ZW0oV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKworICAgIC8v
IE1lc3NhZ2VzIHRvIGJlIHNlbnQuCisgICAgdm9pZCByZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwpAQCAtNzQsMTQgKzc3LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2Vp
dmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZv
aWQgcmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBm
bHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZl
cmVuY2UmJik+JiYpOwotCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCA9
IEhhc2hNYXA8SW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Pj47Ci0gICAgSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlck1hcCBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgdm9pZCBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaElt
YWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZs
dXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVj
dCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOworICAgIHZvaWQgY2Fj
aGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgV2Vh
a1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA3OThjOGI0ZWRiNTdmNWFkMDgyYmE4MWMxMDA4YjBkY2RlZmRmMThhLi5iMzFj
YzY3M2U4YTNhOTMzNzg1Y2I2OWUxZjMzODgxZWExYTg0ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywxMiBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNw
YWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
Ci0gICAgdm9pZCBSZWxlYXNlSW1hZ2VCdWZmZXIoV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdp
bmdDb250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwg
V2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAg
IHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJbWFnZUJ1ZmZlckZs
dXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90
IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJ
bnRSZWN0IHNyY1JlY3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVy
SWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dp
Y2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2b2lk
IEZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2lu
Z0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3Bs
YXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKKyAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIC0+
IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGltYWdlLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
IHZvaWQgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwYWY1OTY5
NWM0ZmQ5ODQ4ZWE0ZjJmNzlhODhkZmFhODI2MDg0YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKworI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICA6IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKK3sKK30K
Kwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKG1fcmVtb3Rl
SW1hZ2VCdWZmZXJIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlOworCisgICAg
aWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQpCisg
ICAgICAgIGltYWdlID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUo
bG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBpZiAoIWlt
YWdlIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRl
ZCkKKyAgICAgICAgaW1hZ2UgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAg
aWYgKGltYWdlKSB7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmFkZChyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2UpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitJbWFnZUJ1ZmZlciogUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSBtX3JlbW90
ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkgeworICAg
ICAgICBpbWFnZS0+Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAgICAgIHJl
dHVybiBpbWFnZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0ltYWdlQnVmZmVy
KiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQo
Y29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBp
bWFnZSA9IGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikpIHsKKyAgICAgICAgaW1hZ2UtPmZsdXNoQ29udGV4dCgpOworICAgICAgICByZXR1
cm4gaW1hZ2U7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8SW1hZ2VE
YXRhPiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBp
ZiAoYXV0byBpbWFnZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmdldEltYWdlRGF0YShvdXRw
dXRGb3JtYXQsIHNyY1JlY3QpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcC5h
ZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZSk7CisgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmRyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0m
IGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBhdXRvJiBkcmF3
SXRlbSA9IHN0YXRpY19jYXN0PGNvbnN0IERpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2UmPihp
dGVtKTsKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IGRyYXdJdGVtLnJlbW90
ZVJlc291cmNlSWRlbnRpZmllcigpOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGltYWdlID0gbV9yZW1vdGVOYXRp
dmVJbWFnZUhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKCFp
bWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIGRyYXdJdGVtLmltYWdlU2l6ZSgpLCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3Qo
KSwgZHJhd0l0ZW0uc291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZmZXJJ
dGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0Cit7CisgICAgYXV0byYgZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBEaXNw
bGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyJj4oaXRlbSk7CisgICAgYXV0byByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgPSBkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICBp
ZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBpbWFnZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGltYWdlLT5kcmF3KGNvbnRleHQsIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBk
cmF3SXRlbS5zb3VyY2UoKSwgZHJhd0l0ZW0ub3B0aW9ucygpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKGNv
bnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0Cit7CisgICAgaWYgKGl0ZW0udHlwZSgpID09IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0ltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gZHJhd0ltYWdlQnVmZmVySXRlbShpdGVtLCBj
b250ZXh0KTsKKyAgICBpZiAoaXRlbS50eXBlKCkgPT0gRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpE
cmF3TmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBkcmF3TmF0aXZlSW1hZ2VJdGVtKGl0ZW0s
IGNvbnRleHQpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmIChtX3JlbW90ZUltYWdlQnVmZmVy
SGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGlmIChtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIENhY2hpbmcgdGhlIHJlbW90
ZSByZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0LgorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yM2U0MjJjOGFhZGNhNjUwM2QwZDY4M2YxMDRlZTNlYzZjYmViM2Q4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKK2NsYXNzIEl0ZW07Cit9Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisK
K2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7CitwdWJsaWM6CisgICAgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOworCisgICAgdm9p
ZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXIqIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1p
dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdl
dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKSBjb25zdDsKKworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CisKKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisKKyAgICB2b2lkIHJl
bGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
Citwcml2YXRlOgorICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SW1hZ2VCdWZmZXI+PjsKKyAgICB1c2luZyBSZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAgPSBI
YXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6TmF0aXZl
SW1hZ2VQdHI+OworCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXJJdGVtKGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Cisg
ICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisKKyAgICBSZW1vdGVJbWFn
ZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXA7CisgICAgUmVtb3RlTmF0
aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwOworICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IDQwMTdhMmE4ZjIyY2VjZWNjMjE1MWEzMGEzMjc4ZmY5MDZlYWYz
MmEuLjY3NDhkMWY1ZDgwMGQ5NTc0ZjIzODA3NWIxODkwYjRlNGFjZWU5MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRF
TEVHQVRFKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmNwcAppbmRleCA5NzdmOTNmZjVjM2MyYjgxNzg0NmM5YTlhNzU1MTc4OWM4ZWZl
MDVjLi42MWI4OTBkYzc4NjdjMzNiMDA1ZjIyZTkzYmIxYWY0N2RkZDNiMTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQppbmRleCBmYWNkMmY3YWZiNWEzOTJlZTIwOTY3YTc2ZmQ0MWUxNGRmYjE1MGI5Li4xNThj
NGVmOTdjMmU5OWI4NzY2NzkzNmViNDBhNWUxODc4ZDE4YjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNywxMSArMjE3LDEzIEBAIGRlZiB0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1l
ZGlhUGxheWVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVu
dGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJywKICAgICAgICAgJ1dl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGll
bnRQb2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAgICAgJ1dlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpSZW5kZXJpbmdNb2RlJywKICAgICAgICAgJ1dlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2JJZGVudGlmaWVyJywKQEAgLTI0MCw3ICsyNDIsNiBAQCBkZWYgdHlwZXNfdGhhdF9j
YW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpHZW9sb2NhdGlv
bklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUn
LAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcicsCi0gICAgICAg
ICdXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkxheWVy
SG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29s
SUQnLAogICAgICAgICAnV2ViS2l0OjpMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXInLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZTBi
YmJiYzViYTIzMThiZmE4ZTYzMTk2ZDU0ZWViYjg5MDM2NDQ0MS4uYTA3NzUzMDk1N2JhOGQ0N2Q1
NDI5YmFkZDY2NzU3NTU0ZDA2MjExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW1hZ2VIYW5kbGUm
IGltYWdlSGFuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVOYXRp
dmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBOYXRpdmVJbWFnZVB0ciBpbWFnZSkKK3N0YXRpYyB2
b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKIHsKICAgICBhdXRvIGltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFn
ZSk7CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShp
bWFnZVNpemUsIHsgfSk7CkBAIC0xMTQzLDcgKzExNDMsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1h
Z2VQdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5h
dGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIE5hdGl2ZUltYWdlUHRyIGltYWdlKQorc3RhdGlj
IHZvaWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAgICAgYm9vbCBoYXNJbWFnZSA9ICEhaW1hZ2U7CiAg
ICAgZW5jb2RlciA8PCBoYXNJbWFnZTsKQEAgLTExNjYsMTQgKzExNjYsMTQgQEAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRGVjb2RlciYg
ZGVjb2RlciwgTmF0aXYKICAgICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1h
Z2UpOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VIYW5kbGUmIGltYWdlSGFuZGxlKQor
dm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICBlbmNvZGVPcHRpb25hbE5h
dGl2ZUltYWdlKGVuY29kZXIsIGltYWdlSGFuZGxlLmltYWdlLmdldCgpKTsKKyAgICBlbmNvZGVP
cHRpb25hbE5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKIH0KIAotYm9vbCBBcmd1bWVudENv
ZGVyPE5hdGl2ZUltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUlt
YWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0
cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7Ci0g
ICAgcmV0dXJuIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2VIYW5kbGUu
aW1hZ2UpOworICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIsIGlt
YWdlKTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mIGZvbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDA1ZDAzNTU0YjllY2E5YTA0
MWMzNjhlZjQ1Mzg4MjQ0MzRjZTZlMjMuLjlmM2IxMDY2OTMzM2JhMzAxNTI5NzgzYzllMWU5MWVh
YmE0Y2FiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZWxl
Y3Rpb25PcHRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlUHRyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNv
dXJjZS5oPgpAQCAtMTA1LDcgKzEwNiw2IEBAIGNsYXNzIEtleWZyYW1lVmFsdWVMaXN0OwogY2xh
c3MgTGF5b3V0U2l6ZTsKIGNsYXNzIExheW91dFBvaW50OwogY2xhc3MgTGluZWFyVGltaW5nRnVu
Y3Rpb247Ci1jbGFzcyBOYXRpdmVJbWFnZUhhbmRsZTsKIGNsYXNzIE5vdGlmaWNhdGlvbjsKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbjsKQEAgLTQxNiw5ICs0MTYsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKIH07CiAKLXRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGU+
IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2
ZUltYWdlSGFuZGxlJik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZShEZWNvZGVyJiwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGUmKTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHI+IHsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7Cisg
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggNzMwZGE2NDhmMmIyZmU5ZTc4NGZkMDQwNTJl
MTkwZjBkMGJmMjFhZC4uOTU5ZGE4M2Q1ZjY5ODhiMjExNTg4ZGE3ZGRiNGZmMTgzZGNlN2Q2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAt
MTA2LDEyICsxMDYsMjcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogCiB2b2lkIFNoYXJlYWJsZUJpdG1h
cDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBkcmF3TmF0aXZl
SW1hZ2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2Up
OworICAgIHBhaW50KGNvbnRleHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCiB2b2lk
IFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2UpCiB7Ci0gICAgZHJhd05hdGl2ZUltYWdlKG1ha2VDR0ltYWdlQ29weSgp
LCBjb250ZXh0LCBzY2FsZUZhY3RvciwgZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjZ0Nv
bnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRpb24ueCgpLCBkZXN0aW5hdGlvbi55KCksIHNvdXJj
ZS53aWR0aCgpLCBzb3VyY2UuaGVpZ2h0KCkpKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0Nv
bnRleHQsIDEsIC0xKTsKKworICAgIGF1dG8gaW1hZ2UgPSBtYWtlQ0dJbWFnZUNvcHkoKTsKKyAg
ICBDR0Zsb2F0IGltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgLyBz
Y2FsZUZhY3RvcjsKKyAgICBDR0Zsb2F0IGltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1h
Z2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisKKyAgICBDR0Zsb2F0IGRlc3RYID0gZGVzdGluYXRp
b24ueCgpIC0gc291cmNlLngoKTsKKyAgICBDR0Zsb2F0IGRlc3RZID0gLWltYWdlSGVpZ2h0IC0g
ZGVzdGluYXRpb24ueSgpICsgc291cmNlLnkoKTsKKworICAgIENHQ29udGV4dERyYXdJbWFnZShj
Z0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdFgsIGRlc3RZLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdo
dCksIGltYWdlLmdldCgpKTsKKworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0
KTsKIH0KIAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6bWFrZUNHSW1h
Z2VDb3B5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRhZjVmYjczMTNiZGQ5ODA2OGRlZGQzOWNiYWM0ZGZi
ZTkzNzdjYTguLjhlM2IyYWZmY2EwMDM0YjMyNmRhOWIyMTk4Yzg1Nzk3NGUwNDkxNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtMjQsOCArMjQsOCBAQAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAotR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCkBAIC01NTIs
OCArNTUyLDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNw
cAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmNwcAotV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlci5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ODQzNGNiYWMwYzJmNjFh
MmQ2ZTI4MDcxNmVjZDcyODgyODg5MjgyLi4yYThjNDJhNWFiZTQxNWJmOWQxMWM3YjBiM2VmNzE4
ODAyYjIwYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTM4ODksNyArMzg4OSw2IEBACiAJCTU1MDY0MEEyMjQwNzFBNjEwMEFBRTA0
NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTU1MDY0MEE1MjQwNzFDQzAwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZl
cklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRDA5NDMyNDA4QTBFNjAw
REU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTVBRDA5NDQyNDA4QUJCMzAwREU0RDJGIC8qIEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc4LDEwICs0MTc3LDcgQEAKIAkJNzFBNjc2
QTUyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0
dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMy
MzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNE
aXNwYXRjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3ODAwQjI0
MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTcyMjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3ODAwRDI0MDk3
QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTcyMjc4MDExMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNzIyNzgwMTIyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzQyNDA3
ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdB
N0YzNTI0MDc4NTdGMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdB
N0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE5MSw2ICs0
MTg3LDEwIEBACiAJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlF
IC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyOUQwNTMyMjUzMTRGRUYwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MzMyNTMxNEZFRjAwNDIyMDk4IC8qIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MzUyNTMxNzND
QzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcy
OUQwNTM2MjUzMTczQ0MwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzVBOEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vi
c2l0ZURhdGFTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLV2Vic2l0ZURhdGFTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVB
OEQyRDQxODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDc2LDE3ICs4MDc2LDE3IEBACiAJ
CQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovLAogCQkJCTcyN0E3RjM5MjQw
Nzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk1NUFE
MDk0NDI0MDhBQkIzMDBERTREMkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCAqLywK
LQkJCQk1NTA2NDBBNTI0MDcxQ0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4MjQwNzg4
RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLAog
CQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVy
LmggKi8sCi0JCQkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIuY3BwICovLAogCQkJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYw
OTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAogCQkJCTU1MDY0MDlF
MjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggKi8sCiAJCQkJNTUw
NjQwQTAyNDA3MTlFMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4gKi8sCisJCQkJNzI5RDA1MzUyNTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwICovLAorCQkJCTcyOUQwNTM2MjUzMTczQ0MwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJj
ZUNhY2hlLmggKi8sCiAJCQkJNTUwNjQwOUYyNDA3MTk2QTAwQUFFMDQ1IC8qIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwpAQCAtODA5
NiwxMiArODA5NiwxMiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmggKi8sCi0JCQkJNzIyNzgwMTEyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8sCi0JCQkJNzIyNzgwMTIyNDA5OTA2RTAwN0Qz
NzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICovLAogCQkJCTU1
QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJ
CQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oICovLAogCQkJCTU1MDY0MEE0MjQwNzFDMjEwMEFBRTA0NSAvKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJNzI5RDA1MzIyNTMx
NEZFRjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgKi8sCisJCQkJNzI5
RDA1MzMyNTMxNEZFRjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVySWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlcklkZW50aWZpZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEx
YmM5YWU4N2RjOGQ3MjQyOGEwYjgwOWNhZDBkODBhNGNkMWNiOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQotCi0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWVudW0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdlQnVmZmVySWRlbnRpZmll
clR5cGU+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBlODQ5MTY2NDUxNDU5NjI4N2VmMmM3OGY5
MDc2ZTFkNDM4MjE5MWYyLi5lODUxZGQwMzhiNzdjYmQ1ZTA1MjdkZjFhMTAyNjg3NjkxMzM5MDc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFj
a2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlciB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6RGVsZWdhdGUgewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVy
ID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1
c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJh
c2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OwpAQCAtNTMsMTQgKzUz
LDIwIEBAIHB1YmxpYzoKIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCiAgICAgeworICAgICAg
ICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQtPnJlbGVhc2VJbWFnZUJ1ZmZlcigqdGhpcyk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOyB9CisKIHByb3RlY3RlZDoKICAg
ICBSZW1vdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIoc2l6ZSkKLSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKHNpemUs
IHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZCkKKyAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0
aGlzKQorICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKSkKICAgICB7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVDcmVhdGVJbWFnZUJ1ZmZl
cihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogICAg
IH0KIAogICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUpIG92ZXJyaWRlCkBAIC02OSwyMiArNzUsNTAgQEAgcHJvdGVj
dGVkOgogICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRs
ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KLQogICAgIEJhY2tlbmRUeXBlKiBlbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIW1f
YmFja2VuZCkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXImPigqdGhp
cykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZCgpOworICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JD
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQo
KTsKICAgICB9CiAKKyAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250
ZXh0KCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNw
bGF5TGlzdCgpOworICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2Vu
dEZsdXNoSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlRmx1c2hE
cmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDb21taXRJ
bWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnJlbGVhc2VSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
ICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hEcmF3aW5n
Q29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQo
KSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQo
ZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisgICAgCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0KSBjb25zdCBvdmVycmlkZQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgICAgICBhdXRv
JiBkaXNwbGF5TGlzdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+bV9k
cmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUlt
YWdlQnVmZmVyKj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNo
RHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnN0
X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlcjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CisgICAgICAgIGlm
IChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgeworICAgICAgICAgICAgY29uc3RfY2FzdDxSZW1v
dGVJbWFnZUJ1ZmZlcio+KHRoaXMpLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsK
KyAgICAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CisgICAgICAgIH0KKwogICAgICAgICAv
LyBnZXRJbWFnZURhdGEgaXMgc3luY2hyb25vdXMsIHdoaWNoIG1lYW5zIHdlJ3ZlIGFscmVhZHkg
cmVjZWl2ZWQgdGhlIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0IG1lc3NhZ2UuCi0gICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnJlbW90ZUdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3Jl
OjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFn
ZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZCkgb3ZlcnJpZGUKQEAgLTk1LDI2ICsxMjksMzIgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlucHV0Rm9y
bWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAgICAgfQog
Ci0gICAgdm9pZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZQorICAgIFJlZlB0cjxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBmbHVzaERyYXdpbmdD
b250ZXh0KCk7Ci0gICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAgICAgIGlm
ICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmNyZWF0ZURyYXdJbWFn
ZUJ1ZmZlckl0ZW0oaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBtX3JlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
KCkgb3ZlcnJpZGUKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0+IGNyZWF0
ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgV2ViQ29yZTo6Q2FjaGVk
SW1hZ2UmIGNhY2hlZEltYWdlKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgYXV0byYgZGlzcGxh
eUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNw
bGF5TGlzdC5pdGVtQ291bnQoKSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRXYWl0Q29tbWl0KGRpc3BsYXlMaXN0KTsK
KyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+Y3Jl
YXRlRHJhd05hdGl2ZUltYWdlSXRlbShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucywgY2FjaGVkSW1hZ2UsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICB9Ci0gICAgCisKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qg
RGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0g
bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlzcGxheUxpc3Qu
aXRlbUNvdW50KCkgPj0gRGlzcGxheUxpc3RCYXRjaFNpemUpCi0gICAgICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0
KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIDwgRGlzcGxheUxpc3RCYXRj
aFNpemUgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAgICAgIGRpc3Bs
YXlMaXN0LmNsZWFyKCk7CiAgICAgfQorCisgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcxNTBjN2IwNzkzYWZlOWFjNWM4
M2E5YWM3NDZiYTMxOGU1MWI4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNp
bmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQobWFrZVdl
YWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkpCi17Ci0gICAgLy8gQ3JlYXRlIHRoZSBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpDcmVhdGVJbWFnZUJ1ZmZlcihz
aXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1faW1hZ2VC
dWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6
flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoKQotewotICAgIC8vIFJlbGVhc2UgdGhl
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCi0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZUltYWdlQnVmZmVy
KG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVmUHRyPEltYWdlRGF0YT4gUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAotewotICAg
IElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKLSAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1faW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0
SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcyk7Ci0gICAgcmV0dXJuIGlt
YWdlRGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyOjp3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCkKLXsKLSAgICBp
ZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kICYmICFpc0JhY2tlbmRDcmVhdGVkKCkpCi0gICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OndhaXRG
b3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpCi17Ci0gICAgaWYgKG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCAmJiBpc1BlbmRpbmdGbHVzaCgpKQotICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQtPndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOwotfQot
Ci12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRl
eHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAg
ICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoZGlzcGxheUxp
c3QsIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwot
fQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0Nv
bnRleHRBbmRXYWl0Q29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QpCi17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBJbWFnZUJ1ZmZlckZsdXNoSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3NlbnRGbHVzaElkZW50aWZpZXIs
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwotICAg
IHdhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOwotfQotCi12b2lkIFJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi17Ci0gICAgbV9yZWNlaXZlZEZsdXNo
SWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlci5oCmluZGV4IDYyMDQxOGQ3OGMyN2YyOGM1NzQ5MDJjMmUxYmE5
YTIzNzE3NTE3YjkuLjYxZGQ1OGNlNTJmZGNlZDRmMTg0YWYwZWE2Nzk3YjI2NjI3NWEyNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCkBAIC0yOSw1MCAr
MjksMzEgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmxv
YXRTaXplOwogY2xhc3MgSW1hZ2VEYXRhOwogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIDogdWludDhfdDsKK2VudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotCiBjbGFz
cyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCk7Ci0KLSAgICBJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1
ZmZlcklkZW50aWZpZXI7IH0KLQogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbi4KICAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpID0gMDsKIAotICAgIHZv
aWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKLQotcHJv
dGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKICAgICBib29sIGlz
UGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1f
cmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURh
dGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2b2lk
IHdhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKLSAgICB2b2lkIHdhaXRGb3JDb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0
KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKKyAgICB7CisgICAg
ICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7CisgICAgfQog
Ci0gICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbi4KLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLQotcHJp
dmF0ZToKLSAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZDsKLSAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50
aWZpZXIgeyBJbWFnZUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK3Byb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCkgPSBkZWZhdWx0
OwogCiAgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVy
OwogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZp
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA5OTUzNDE3ODdlZGEyMGE1
NTRlNGQ2N2JhNTNkYzY5OGE1MzcwY2MwLi4wNjU3ODE0MmM2YWUyMTUxOGYzMDJmYmRjMDRlNWVm
MTk5OGE0NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTg4LDM4ICs4
OCw3NSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OndhaXRGb3JDb21taXRJbWFnZUJ1
ZmZlckZsdXNoQ29udGV4dCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBTaG91bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGlmIChzaG91bGRBY2NlbGVyYXRlID09
IFNob3VsZEFjY2VsZXJhdGU6OlllcykgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2Rl
OjpSZW1vdGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykp
IHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VC
dWZmZXItPmltYWdlQnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJu
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzaG91bGRBY2Nl
bGVyYXRlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworfQogCi0gICAgaWYgKGF1dG8g
aW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
LCBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJN
YXAuYWRkKGltYWdlQnVmZmVyLT5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIu
Z2V0KCkpOwotICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgfQordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlKQor
eworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlSW1hZ2VCdWZmZXIoaW1hZ2UpOwor
fQogCi0gICAgcmV0dXJuIG51bGxwdHI7CitSZWZQdHI8RGlzcGxheUxpc3Q6Okl0ZW0+IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oSW1hZ2VCdWZmZXIm
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlLmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oaW1hZ2UsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworUmVmUHRyPERp
c3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVEcmF3TmF0aXZl
SW1hZ2VJdGVtKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlJiBj
YWNoZWRJbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZp
ZXIpCit7CisgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVEcmF3TmF0aXZl
SW1hZ2VJdGVtKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBj
YWNoZWRJbWFnZSwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudChSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
cmVsZWFzZVJlbW90ZUNsaWVudChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAg
ICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVy
aW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZW1vdGVHZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSVBDOjpJbWFnZURhdGFSZWZlcmVu
Y2UgaW1hZ2VEYXRhUmVmZXJlbmNlOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgMV9zKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNl
LmJ1ZmZlcigpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUZsdXNo
RHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlz
dCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKK0ltYWdlQnVmZmVyRmx1
c2hJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUZsdXNoRHJhd2luZ0Nv
bnRleHRBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlz
dCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBzZW50Rmx1c2hJZGVudGlmaWVyID0gSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRl
eHRBbmRDb21taXQoZGlzcGxheUxpc3QsIHNlbnRGbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVy
biBzZW50Rmx1c2hJZGVudGlmaWVyOworfQorCitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlQ2FjaGVOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCit7CisgICAgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllciA9IFJlbW90ZVJlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNhY2hlTmF0
aXZlSW1hZ2UoaW1hZ2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CiB9
CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdl
QnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIC8vIENyZWF0ZUltYWdl
QnVmZmVyIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUu
Ci0gICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5yZW1vdmUo
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpSZWxlYXNl
UmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IElu
dFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAo
YXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNyZWF0ZUJhY2tlbmQo
bG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdU
Rk1vdmUoaGFuZGxlKSk7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQog
Ci12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250
ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAg
ICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllcik7Cisg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZs
dXNoSWRlbnRpZmllciwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGY0OTYxNThlN2Q0
MGVlYjA1YWMzOTQzNGFmMjQ2MzNiYWJjN2YwZWYuLmU5MzMzMGU3NWFjODNjODRjNGNjOWZhYWEy
NzdlMzI4Y2ZjNTY1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0yOSwxOCAr
MjksMjQgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNp
emUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OworY2xhc3MgSXRlbTsKK30KK2Ns
YXNzIEZsb2F0U2l6ZTsKK2VudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitlbnVtIGNs
YXNzIFJlbmRlcmluZ01vZGUgOiB1aW50OF90OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZApAQCAtNTIsOCArNTgsNiBAQCBwdWJsaWM6CiAK
ICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9Ci0KICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIu
CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qg
b3ZlcnJpZGU7CkBAIC02MSwyMSArNjUsMzIgQEAgcHVibGljOgogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwg
V2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlKTsKLSAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpOwotCiAgICAgYm9vbCB3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7
CiAgICAgYm9vbCB3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKTsKKyAgICAg
ICAgCisgICAgLy8gUmVzb3VjZSBjYWNoZS4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSk7CisgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1h
Z2VCdWZmZXImKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0+IGNyZWF0
ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0+
IGNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYsIFdlYkNvcmU6OkNhY2hlZEltYWdlJiwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1v
dGVDbGllbnQoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIC8vIE1l
c3NhZ2VzIHRvIGJlIHNlbnQuCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gcmVtb3RlR2V0SW1hZ2VEYXRh
KFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIHZvaWQgcmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIHJlbW90ZUZsdXNoRHJhd2luZ0NvbnRl
eHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlQ2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRp
dmVJbWFnZVB0ciYpOworICAgIHZvaWQgcmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCgpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAg
dm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJG
bHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVySWRlbnRp
Zmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICB1c2luZyBJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIqPjsKLSAgICBJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZSB7ICp0aGlzIH07CiAgICAgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7IFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMTJhN2JmOGRhNGM4MjU3
MGJjYTM2YTEzNWZkNzFhZjI1ODhiNjRkNS4uMmMwZjdlOGExMjAzZjI2ODY1MmEwMGZjMWY3YjE3
ZGE1OTlkMmFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbgpAQCAtMjMsOCArMjMsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2Fn
ZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIENy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdl
YkNvcmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBoYW5kbGUsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRp
ZmllcikKLSAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KFdlYktpdDo6SW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJLaXQ6OkltYWdlQnVm
ZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgdm9pZCBDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJ
bnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxl
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQorICAgIHZvaWQgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoV2ViS2l0OjpJbWFn
ZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42M2Y5NzJjMTBkZDFjYWQyYjcwZDZjMzQxNTVmNzE1ZTg1ODIxYjNjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcApAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJl
c291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBpZiAoc2hvdWxkQWNjZWxl
cmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VC
dWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVy
aW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1
ZmZlckhhc2hNYXAuYWRkKGltYWdlQnVmZmVyLmdldCgpLCBpbWFnZUJ1ZmZlci0+cmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVySGFzaE1hcC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmll
cigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90
ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKSkgeworICAgICAgICBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5hZGQo
aW1hZ2VCdWZmZXIuZ2V0KCksIGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KSk7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuYWRk
KGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0
KCkpOworICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CisgICAgfQorCisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
cmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxT
aXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhh
bmRsZSkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdEltYWdlQnVmZmVy
Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAg
ICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVm
ZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVEcmF3
SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgPSBmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoaW1hZ2UsIHJl
bW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGbHVzaCB0aGUgRHJhd2luZ0NvbnRl
eHQgb2YgdGhlIHNvdXJjZSBJbWFnZUJ1ZmZlciBzbyB0aGlzIEltYWdlQnVmZmVyIGdldHMgYW4g
dXBkYXRlZCBpbWFnZS4KKyAgICBpbWFnZS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmNyZWF0ZShyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKworUmVm
UHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVh
dGVEcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENh
Y2hlZEltYWdlJiBjYWNoZWRJbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNs
aWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBm
aW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoY2FjaGVkSW1hZ2UsIGltYWdlLCByZW1vdGVDbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6OmNyZWF0ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFn
ZSkKK3sKKyAgICAvLyBSZW1vdmUgdGhlIHJlc291cmNlIGZyb20gdGhlIGNhY2hlLgorICAgIGF1
dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAu
dGFrZSgmaW1hZ2UpOworICAgIEFTU0VSVChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisg
ICAgLy8gY3JlYXRlSW1hZ2VCdWZmZXIgc2hvdWxkIGhhdmUgYmVlbiByZXR1cm5lZCB0aGlzIElt
YWdlQnVmZmVyIGJlZm9yZS4KKyAgICBib29sIGZvdW5kID0gbV9yZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVySGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CisKKyAgICAvLyBUZWxsIHRoZSBHUFUgcHJv
Y2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZSB1bmxlc3MgaXQncyBwZW5kaW5nIHJlcGxheWlu
ZyBiYWNrLgorICAgIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcjsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6
OnJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
Cit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZS4KKyAgICBhdXRv
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwLnRh
a2UoaW1hZ2UpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMg
cmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICBpZiAocmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5k
aW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHJldHVybiBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoSW1hZ2VCdWZmZXIm
IGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikK
K3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZm
ZXJIYXNoTWFwLmdldCgmaW1hZ2UpOworICAgIGFkZFJlbW90ZUNsaWVudChyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2UmIGNhY2hlZEltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAuZW5zdXJlKGlt
YWdlLCBbJl0geworICAgICAgICBjYWNoZWRJbWFnZS5hZGRDbGllbnQoKnRoaXMpOworICAgICAg
ICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZUNhY2hlTmF0aXZlSW1hZ2Uo
aW1hZ2UpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGFkZFJlbW90ZUNsaWVudChy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJl
dHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZTo6YWRkUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVu
dGlmaWVyKQoreworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBBZGQgdGhlICJyZXNvdXJjZSAtPiBjbGllbnQiIGRlcGVuZGVuY3kg
aW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGF1dG8mIGNsaWVudHMgPSBt
X3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuZW5zdXJlKHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUNsaWVudHNIYXNoU2V0KCk7CisgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgY2xpZW50cy5hZGQocmVtb3RlQ2xpZW50SWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcmVtb3RlUmVzb3VyY2VDbGllbnRz
UGVuZGluZ1JlbGVhc2VIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikp
OworCisgICAgLy8gSWYgd2UgaGF2ZSByZWNvcmRlZCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRl
cGVuZGVuY3kgYmVmb3JlIGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCwgbW92ZSB0
aGlzCisgICAgLy8gZGVwZW5kZW5jeSB0byBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdS
ZWxlYXNlSGFzaE1hcC4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgY2Fj
aGUuCisgICAgaWYgKG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5jb250YWlucyhyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1Bl
bmRpbmdSZWxlYXNlSGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBtX3JlbW90
ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAudGFrZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKTsK
KyAgICBlbHNlCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZWxlYXNl
UmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPFJl
bW90ZVJlc291cmNlSWRlbnRpZmllcj4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVtb3Rl
Q2xpZW50KFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291cmNlQ2xpZW50
c0hhc2hNYXAsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVy
KQoreworICAgIFZlY3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNl
Q2xpZW50c1RvQmVSZW1vdmVkOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4g
Y2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisg
ICAgZm9yIChhdXRvJiBwYWlyIDogcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCkgeworICAg
ICAgICBwYWlyLnZhbHVlLnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAg
aWYgKHBhaXIudmFsdWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDbGll
bnRzVG9CZVJlbW92ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4g
YSBsaXN0IG9mIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzLgorICAgIHJldHVybiByZW1vdGVS
ZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZDsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hl
OjpyZWxlYXNlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGll
bnRJZGVudGlmaWVyKQoreworICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVu
dCBkZXBlbmRlbmNpZXMgZnJvbSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAg
Zm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudCht
X3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKQor
ICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGll
bnQgZGVwZW5kZW5jaWVzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFz
ZUhhc2hNYXAuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92
ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1h
cCwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSB1bnJl
ZmVyZW5jZWQgcmVzb3VyY2VzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVs
ZWFzZUhhc2hNYXAuCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVh
c2VIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgICAgIC8v
IFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTE3ODAxMTUxYzZhMWQyNDQzZTM2N2Q2NmE0ODE2NmMzYmYwZTgwZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRl
ICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVk
SW1hZ2VDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBJdGVtOworfQorZW51bSBjbGFzcyBDb2xv
clNwYWNlIDogdWludDhfdDsKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0OworY2xhc3Mg
RmxvYXRTaXplOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlcjsKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisKK2Ns
YXNzIFJlbW90ZVJlc291cmNlQ2FjaGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGll
bnQgeworcHVibGljOgorICAgIFJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpTaG91bGRB
Y2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOwor
ICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNv
bW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgUmVmUHRyPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtPiBjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0
aW9ucyYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBjcmVhdGVEcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
LCBXZWJDb3JlOjpDYWNoZWRJbWFnZSYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVsZWFzZUltYWdl
QnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciYpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAg
dXNpbmcgUmVtb3RlQ2xpZW50c0hhc2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFz
aE1hcDxXZWJDb3JlOjpJbWFnZUJ1ZmZlciosIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcj47CisgICAgdXNpbmcgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsK
KyAgICB1c2luZyBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUNsaWVudHNIYXNoU2V0PjsKKyAgICB1
c2luZyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcCA9IEhhc2hNYXA8V2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyKj47CisKKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IFdl
YkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSkgb3ZlcnJpZGUgeyByZWxlYXNlTmF0aXZlSW1h
Z2UoaW1hZ2UpOyB9CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmlu
ZEltYWdlQnVmZmVyRm9yQ2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgY29u
c3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZFJlbW90ZUNsaWVu
dChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBWZWN0b3I8V2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPiByZW1vdmVSZW1vdGVDbGllbnQoUmVtb3RlUmVz
b3VyY2VDbGllbnRzSGFzaE1hcCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBl
bmRpbmdSZW1vdmVDbGllbnRzKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisK
KyAgICBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXA7
CisgICAgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFw
OworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNsaWVu
dHNIYXNoTWFwOworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNv
dXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXA7CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFz
aE1hcDsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dl
YkdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9X
ZWJHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDFhZTUxNTcyNTM2MWQyMjgyMTkxNGFlZDBmMjhi
YjE2ZTc2MzU4ZmYuLjMwMDUwYWMwN2RjOWFkNWM4M2YzZGUyODMyOTA2YTk4NzQxMGQzZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBh
ZFByb3ZpZGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHQU1FUEFEKQogCiAj
aW5jbHVkZSAiR2FtZXBhZERhdGEuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
V2ViR2FtZXBhZC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbE1lc3NhZ2VzLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411096</attachid>
            <date>2020-10-11 21:54:07 -0700</date>
            <delta_ts>2020-10-12 00:08:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201011215407.patch</filename>
            <type>text/plain</type>
            <size>199861</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMxYWE4Njk0MDM0ZjFl
ZDg1MGRmZjdlYzFlNmViYThkZTNiNGJiZS4uMDEwNTQ1YjI3YTdiNDIzODU3YTNlMTE0Y2MzZDVj
OGZkZDU3ZmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMSBAQAorMjAyMC0xMC0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gQ2FjaGUgdGhlIEJpdG1hcEltYWdlIGZyYW1lIGluIEdQVSBQcm9jZXNzIGFuZCBh
bGxvdyByZWZlcmVuY2luZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRtbC9JbWFn
ZUJpdG1hcC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2Jz
ZXJ2ZXI6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZUNsaWVudDo6bmF0aXZlSW1h
Z2VXaWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFn
ZTo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6Om5hdGl2ZUltYWdlUHRyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjppbWFnZVNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6b3B0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUlt
YWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbSk6
CisKKzIwMjAtMTAtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENsZWFuIHRoZSBEaXNwbGF5TGlzdCByZWNvcmRp
bmcgb2YgdGhlIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAxKSBNb3ZlIHRoZSBkZWZpbml0aW9uIG9mIE5hdGl2ZUltYWdlUHRyIHRv
IGEgc2VwYXJhdGUgaGVhZGVyIGZpbGUgbmFtZWQKKyAgICAgICAgICAgTmF0aXZlSW1hZ2VQdHIu
CisgICAgICAgIDIpIFJlbW92ZSB0aGUgY2xhc3MgSW1hZ2VIYW5kbGUgYW5kIGFsbG93IGVuY29k
aW5nIGFuZCBkZWNvZGluZyBOYXRpdmVJbWFnZVB0cgorICAgICAgICAgICBkaXJlY3RseS4KKyAg
ICAgICAgMykgUmVtb3ZlIHRoZSBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGFyb3VuZCB0aGUgRGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZQorICAgICAgICAgICBpdGVtIGFuZCB0aGUgbWV0aG9k
IGRyYXdOYXRpdmVJbWFnZSgpLgorICAgICAgICA0KSBNb3ZlIHRoZSBkcmF3TmF0aXZlSW1hZ2Uo
KSBtZXRob2RzIHRvIHRoZSBzb3VyY2VzIG9mIHRoZWlyIGNhbGxlcnMuCisgICAgICAgIDUpIElu
IHRoZSBjYXNlIG9mIHJlY29yZGluZyB0aGUgZHJhd2luZyBjb21tYW5kcywgbWFrZSBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZSgpCisgICAgICAgICAgIHByb2Nlc3MgZHJhd2luZyB0aGUgaW1h
Z2VzIHN1Y2ggdGhhdCBwcmltaXRpdmVzIGRyYXdpbmcgY29tbWFuZHMgYXJlCisgICAgICAgICAg
IHJlY29yZGVkLiBGb3IgZXhhbXBsZSBhIEJpdG1hcEltYWdlIHdpbGwgcmVuZGVyIGEgTmF0aXZl
SW1hZ2UgZXZlbnR1YWxseS4KKyAgICAgICAgICAgQW5kIFNWR0ltYWdlIHdpbGwgcmVjb3JkIGl0
cyByZW5kZXIgdHJlZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2VQdHIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6cmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3SW1hZ2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlvblJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6b3B0aW9ucyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisKKzIwMjAtMTAtMTAgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFBy
b2Nlc3NdIEltcGxlbWVudCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyIGl0ZW0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU2NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzZXF1ZW5jZSBp
biB0aGUgV2ViIFByb2Nlc3MgaXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAtLSBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcigpIHVzZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyIHRv
IGNoZWNrCisgICAgICAgICAgIHdoZXRoZXIgaXQgaXMgYXBwcm9wcmlhdGUgdG8gY3JlYXRlIERy
YXdJbWFnZUJ1ZmZlciBpdGVtIG9yIG5vdC4KKworICAgICAgICAtLSBEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcigpIHVzZXMgdGhlIGRlbGVnYXRlIHRvIHRvIGNyZWF0ZQor
ICAgICAgICAgICB0aGUgRHJhd0ltYWdlQnVmZmVyIGl0ZW0uCisKKyAgICAgICAgLS0gU2luY2Ug
UmVtb3RlSW1hZ2VCdWZmZXIgaW5oZXJpdHMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0
ZSwgCisgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJ
dGVtKCkgd2lsbCBiZSBjYWxsZWQuCisKKyAgICAgICAgLS0gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbSgpIHdpbGwgYmUgY2FsbGVkIG5leHQKKyAgICAg
ICAgICAgd2hpY2ggd2lsbCBjYWxsIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdJbWFn
ZUJ1ZmZlckl0ZW0oKS4KKworICAgICAgICAtLSBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVE
cmF3SW1hZ2VCdWZmZXJJdGVtKCkgY2hlY2tzIGl0cyBIYXNoTWFwCisgICAgICAgICAgIHVzaW5n
IHRoZSBJbWFnZUJ1ZmZlciogdG8gZmluZCB0aGUgY29ycmVzcG9uZGluZyBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIuCisgICAgICAgICAgIElmIGl0IGZpbmRzIGl0LCBpdCB3aWxsIGNyZWF0ZSB0
aGUgRHJhd0ltYWdlQnVmZmVyIGl0ZW0uCisKKyAgICAgICAgVGhlIHNlcXVlbmNlIGluIHRoZSBH
UFUgUHJvY2VzcyBpcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIFdoZW4gcmVwbGF5aW5n
IGJhY2sgdGhlIERpc3BsYXlMaXN0LCBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgd2lsbCBjYWxsCisg
ICAgICAgICAgIGl0cyBkZWxlZ2F0ZSB0byBjaGVjayBpZiBpdCB3YW50cyB0byBhcHBseSB0aGUg
RHJhd0ltYWdlQnVmZmVyLgorCisgICAgICAgIC0tIEJlY2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSBpbmhlcml0cyBEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlLAorICAgICAgICAg
ICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjphcHBseSgpIHdpbGwgYmUgY2FsbGVkLgorCisgICAg
ICAgIC0tIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgd2lsbCBjYWxsIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6YXBwbHlSZXNvdXJjZUl0ZW0oKQorICAgICAgICAgICB3aGljaCB3aWxsIHBh
c3MgaXQgdG8gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS4KKworICAgICAgICAtLSBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKCkgd2lsbCBzZWFyY2ggZm9y
IGEKKyAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXIgd2hvc2UgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIG1hdGNoZXMgdGhlIG9uZSBpbgorICAgICAgICAgICBEcmF3SW1hZ2VCdWZmZXIuIEFu
ZCB0aGVyZSBpcyBvbmUsIGl0IHdpbGwgZHJhd3MgdG8gR3JhcGhpY3NDb250ZXh0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0Nv
bnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpEcmF3
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlvblJlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6b3B0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXhM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnB1
dEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Ondp
bGxBcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpEZWxlZ2F0ZTo6fkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9ic2Vy
dmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
T2JzZXJ2ZXI6OndpbGxBcHBlbmRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoK
KyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oOgorCisyMDIwLTEwLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1
Y2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRo
ZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE3NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGEgbmV3IHZpcnR1YWwgbWV0aG9kcyB0byBJbWFnZUJ1ZmZlciB3aGljaCB1c2Vk
IHRvIGJlIGEgdmlydHVhbCBtZXRob2QKKyAgICAgICAgb2YgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LiBUaGlzIG1ldGhvZCBpcyBhbHJlYWR5IG92ZXJyaWRkZW4KKyAgICAg
ICAgYnkgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBhbmQgaXMgY2FsbGVkIGJ5IFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS4gQnV0CisgICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBrZWVw
cyBhIEhhc2hNYXAgb2YgSW1hZ2VCdWZmZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaERy
YXdpbmdDb250ZXh0KToKKworMjAyMC0xMC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IFJlcGxhY2UgIkltYWdl
QnVmZmVySWRlbnRpZmllciIgYnkgYSBnZW5lcmljIGlkZW50aWZpZXIgbmFtZWQgIlJlbW90ZVJl
c291cmNlSWRlbnRpZmllciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciB3aWxsIGJlIHVzZWQgaW4gV2ViQ29y
ZSB3aGVuIHJlY29yZGluZyBkcmF3aW5nCisgICAgICAgIGEgcmVtb3RlIEltYWdlQnVmZmVyIHRv
IGFub3RoZXIgcmVtb3RlIEltYWdlQnVmZmVyLiBFdmVudHVhbGx5IGl0IHdpbGwKKyAgICAgICAg
YmUgdXNlZCBkcmF3aW5nIGEgcmVtb3RlIE5hdGl2ZUltYWdlIHRvIGEgcmVtb3RlIEltYWdlQnVm
ZmVyIG9yIERPTSBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMC0xMC0wOSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc10gTWVjaGFuaWNhbCBjbGVhbnVwIGluIERpc3BsYXlMaXN0UmVjb3JkZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYTViYTM0N2IxYTFmZmYyOTFkZWE4NDEyM2MwNDY2ZTlhMGU2NDc4ZS4uMjhjMTIzMTkw
MzFkZTI5ZGEwMTVmODExMjYwZmJhZmQxMzk5YWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNTQg
QEAKKzIwMjAtMTAtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENhY2hlIHRoZSBCaXRtYXBJbWFnZSBmcmFtZSBp
biBHUFUgUHJvY2VzcyBhbmQgYWxsb3cgcmVmZXJlbmNpbmcgaXQgd2l0aCBpdHMgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTc1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNo
ZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3TmF0aXZlSW1hZ2VJdGVtIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291
cmNlSXRlbSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDYWNoZU5hdGl2ZUltYWdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdO
YXRpdmVJbWFnZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpy
ZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKworMjAyMC0xMC0xMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2xlYW4gdGhlIERpc3BsYXlMaXN0IHJlY29yZGluZyBvZiB0aGUgTmF0aXZlSW1hZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHA6CisgICAgICAgIChJUEM6OmVuY29kZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKElQQzo6ZW5j
b2RlT3B0aW9uYWxOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0
aXZlSW1hZ2VQdHI+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2
ZUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJ
bWFnZUhhbmRsZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxl
Qml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToK
KworMjAyMC0xMC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IERpc3BsYXlMaXN0OjpEcmF3SW1h
Z2VCdWZmZXIgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE3NTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6YXBwbHkpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjphcHBseVJlc291cmNl
SXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZmZXJJdGVtIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291cmNlSXRlbSBjb25zdCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6flJlbW90ZUltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
RHJhd0ltYWdlQnVmZmVySXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKworMjAyMC0xMC0xMCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGUgdG8gbWFuYWdlIHRoZSByZW1vdGUg
cmVzb3VyY2VzIGluIFdlYiBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTc1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwgYmUgcmVzcG9uc2libGUg
Zm9yIG1hbmFnaW5nIHRoZSByZW1vdGUgcmVzb3VyY2VzCisgICAgICAgIGluY2x1ZGluZyB0aGVp
ciBhY3R1YWwgbGlmZSBjeWNsZSBpbiB0aGUgV2ViIFByb2Nlc3Mgc2lkZS4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZAorICAgICAgICB3aWxsIGJlIHJlc3BvbnNpYmxlIG9ubHkgZm9yIHRoZSBJUEMg
Y29tbXVuaWNhdGlvbnMgd2l0aCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisgICAgICAg
IEl0IHdpbGwgZGVsZWdhdGUgYWxsIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50IHRvIGl0cyBSZW1v
dGVSZXNvdXJjZUNhY2hlLgorCisgICAgICAgIEJlY2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXIgZG9l
cyB0aGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFdlYkNvcmUgYW5kIEdQVQorICAgICAgICBQcm9j
ZXNzLCBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwga2VlcCB0d28gSGFzaE1hcHMgdG8gZWFzZSB0
aGUgbWFwcGluZworICAgICAgICBpbiBib3RoIGRpcmVjdGlvbnM6CisKKyAgICAgICAgLS0gbV9y
ZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbWFwcyBJbWFnZUJ1ZmZlciogLT4gUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyCisgICAgICAgIC0tIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ckhhc2hNYXAgbWFwcyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgICAgLT4gUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcioKKworICAgICAgICBUbyBrZWVwIHRyYWNrIG9m
IHRoZSByZXNvdXJjZSByZWZlcmVuY2luZywgUmVtb3RlUmVzb3VyY2VDYWNoZSB1c2VzIGFub3Ro
ZXIgCisgICAgICAgIG1hcCB3aGljaCByZWxhdGVzIGEgcmVtb3RlIHJlc291cmNlIHdpdGggdGhl
IHNldCBvZiByZW1vdGUgZHJhd2luZyBjbGllbnRzLgorICAgICAgICAKKyAgICAgICAgLS0gbV9y
ZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1hcHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IC0+CisgICAgICAgICAgIEhhc2hTZXQ8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPgorCisgICAg
ICAgIFRoZSByZW1vdGUgcmVzb3VyY2UgaGFzIHN0YXkgYWxpdmUgdGlsbCB0aGVpciBjbGllbnRz
IHJlcGxheWVkIGJhY2sgdGhlaXIKKyAgICAgICAgRGlzcGxheUxpc3Q6Okl0ZW1zIHdoaWNoIHJl
ZmVyZW5jZSB0aGVzZSByZXNvdXJjZXMuIE9uY2UgUmVtb3RlUmVzb3VyY2VDYWNoZQorICAgICAg
ICBpcyByZXF1ZXN0ZWQgdG8gcmVsZWFzZSBhIHJlbW90ZSByZXNvdXJjZSBidXQgaXQgZmluZHMg
dGhpcyByZXNvdXJjZSBpcworICAgICAgICByZWZlcmVuY2VkIGJ5IGEgc2V0IG9mIHJlbW90ZSBk
cmF3aW5nIGNsaWVudHMsIGl0IG1vdmVzIHRoZSBlbnRyeSBvZiB0aGlzCisgICAgICAgIHJlc291
cmNlIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIHRvIGFub3RoZXIgSGFzaE1h
cCBuYW1lZDoKKworICAgICAgICAtLSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxl
YXNlSGFzaE1hcCBtYXBzIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICAgICAtPiBI
YXNoU2V0PFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4KKworICAgICAgICBXaGVuIGFuIGVudHJ5
IGZvciBhIHJlbW90ZSByZXNvdXJjZSBleGlzdHMgaW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQ
ZW5kaW5nUmVsZWFzZUhhc2hNYXAgCisgICAgICAgIGFuZCBubyByZW1vdGUgY2xpZW50IHJlZmVy
ZW5jZXMgaXQgYW55bW9yZSwgUmVtb3RlUmVzb3VyY2VDYWNoZSB3aWxsIHRlbGwgCisgICAgICAg
IEdQVSBQcm9jZXNzIHRvIHJlbGVhc2UgaXRzIHJlbW90ZSByZXNvdXJjZSBhcyB3ZWxsLgorCisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
cjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Y29t
bWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlR2V0SW1hZ2VEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJl
bW90ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFn
ZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNv
dXJjZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGU6OmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmFkZFJlbW90ZUNsaWVudCk6CisgICAgICAg
IExpbmtzIGEgcmVtb3RlIHJlc291cmNlIHdpdGggYSBkcmF3aW5nIHJlbW90ZSBjbGllbnQuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGllbnQpOgorICAgICAgICBSZW1vdmUgYWxsIHRoZSBlbnRy
aWVzIHdoaWNoIGluY2x1ZGVzIGEgY2VydGFpbiByZW1vdGUgY2xpZW50LgorCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVDbGllbnQpOgorICAgICAg
ICBBIHJlbW90ZSBjbGllbnQgaGFzIGRvbmUgZmx1c2hpbmcgaXRzIERyYXdpbmdDb250ZXh0LiBJ
dCdzIHRpbWUgdG8gYm9vay0KKyAgICAgICAga2VlcCB0aGUgcmVzb3VyY2UgcmVmZXJlbmNpbmcg
YW5kIHN5bmMgdXAgd2l0aCB0aGUgR1BVIHNpZGUgaWYgaXQgaGFzIHRvCisgICAgICAgIHJlbGVh
c2Ugc29tZSBvZiB0aGUgcmVtb3RlIHJlc291cmNlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6CisKKzIwMjAtMTAtMDkgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRo
ZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgd2lsbCBiZSBy
ZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHJlbW90ZSByZXNvdXJjZXMKKyAgICAgICAgaW5j
bHVkaW5nIHRoZWlyIGFjdHVhbCBsaWZlIGN5Y2xlLiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkgd2lsbCBiZSAKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSBJUEMgY29tbXVuaWNhdGlv
bnMgd2l0aCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLiBJdCB3aWxsCisgICAgICAgIGRlbGVnYXRl
IGFsbCB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudCB0byBpdHMgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LgorCisgICAgICAgIFdlIGNhbiBnZXQgcmlkIG9mIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eSBiZWNhdXNlIGFsbCBpdCBkb2VzCisgICAgICAgIGlzIHNlbmRpbmcgbWVz
c2FnZXMgdG8gV2ViUHJvY2Vzcy4gUmVtb3ZpbmcgaXQgd2lsbCBzaW1wbGlmeSB0aGUgaW50ZXJm
YWNlCisgICAgICAgIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFNlbmRpbmcgdGhlIG1lc3Nh
Z2VzIHdpbGwgYmUgbW92ZWQgdG8KKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjphcHBseSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VC
dWZmZXJEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VS
ZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDIwLTEwLTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogUmVwbGFjZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyIiBieSBhIGdlbmVyaWMgaWRl
bnRpZmllciBuYW1lZCAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR1BVIFByb2Nlc3MgbmVlZHMgYSB1bml2
ZXJzYWwgaWRlbnRpZmllciBmb3IgZHJhd2luZyBjYWNoZWQgcmVzb3VyY2VzIGFuZCAKKyAgICAg
ICAgZHJhd2luZyBidWZmZXJzIGFuZCBsYXllcnMuIFRoZSBtZWFuaW5nIG9mIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciB3aWxsCisgICAgICAgIGRlcGVuZCBvbiB0aGUgY29udGV4dCBpdCBpcyB1
c2VkIGluLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
SW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpn
ZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRD
b21taXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZl
ckZsdXNoQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnJlbGVhc2VJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisKIDIwMjAt
MTAtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVSBQcm9jZXNzXSBBZGQgYWRkaXRpb25hbCBzdXBwb3J0IGZvciBwYWludGluZyB2aWRlbyBl
bGVtZW50cyB0byAyRCBjb250ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTg0N2IwNWFiNDRl
NWNkNGE3MDZiZTMwOGM4YjY0NWI1MjU0MDBmZS4uYmYwN2EyNWI2YTkwNDZlOTEwODBmN2Q0MWU4
NWQ5MjI5NGM1Zjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTk0LDYgKzExOTQsNyBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdl
SW5mby5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xF
U1NoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC0xMjA3LDYgKzEyMDgsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0
VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2Ft
cGxlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2Q2MWUwNWIzNTc3MzA0YzE4M2M1MDNmODMx
ZWM4OTQxMDEwMDAyMS4uM2ZlMjlmOGJjZTg0YTI0YjY5NzZlZTBkNzMyZWJmZjQ1YmFhZWQzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjAwNyw3ICsyMDA3LDYgQEAKIAkJNkE3Mjc5OEIxRjE2QzI5QzAwM0YzOUI4IC8qIElu
c3BlY3RvclNoYWRlclByb2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZBNzI3OTg4MUYxNkMyOUIwMDNGMzlCOCAvKiBJbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtLmggKi87IH07CiAJCTZCMEEwN0YyMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0
cmlidXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZCMEEwN0YwMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0cmlidXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjFGNDgxMTIyOThB
MzdFMDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkIxRjQ4MEYyMjk4OUVDNDAw
REU4QjgyIC8qIENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2QjM0ODA5NDBFRUY1MEQ0MDBB
QzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNEQ0MTJE
MjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExv
Z2dlZEluU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNkI0RTg2MTMyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjRFODYxMjIy
MUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjUwN0EyNDIzNEJGMzQxMDBCRTdDNjIg
LyogTmF2aWdhdG9ySXNMb2dnZWRJbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkI1MDdBMjEyMzRCRjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9n
Z2VkSW4uaCAqLzsgfTsKQEAgLTIxNjEsNiArMjE2MCw5IEBACiAJCTcyN0E3RjNBMjQwNzhCODQw
MDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAv
KiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2
ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5
RDA1M0MyNTMyRUVFMzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyog
TmF0aXZlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3MjlEMDUzRDI1MzJFRjkxMDA0MjIwOTggLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTM5MjUzMkQy
RTcwMDQyMjA5OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmlt
YXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNB
RTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMg
LyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICov
OyB9OwpAQCAtOTQ4Nyw3ICs5NDg5LDYgQEAKIAkJNkIwQTA3RjAyMUZBNEI1QzAwRDU3MzkxIC8q
IEFkQ2xpY2tBdHRyaWJ1dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZENsaWNrQXR0cmlidXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkIwQTA3RjEyMUZBNEI1QzAwRDU3Mzkx
IC8qIEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZENsaWNrQXR0
cmlidXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjFGNDgwRjIyOTg5
RUM0MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dl
ZEluU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlZEluU3RhdHVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZCNEQ0MTJDMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0
YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnZWRJblN0YXR1cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNEU4NjEyMjIxQjcxM0YwMDIyRjM4OSAvKiBSZWdpc3Ry
YWJsZURvbWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RyYWJsZURvbWFpbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTkyMyw2ICs5OTI0LDggQEAKIAkJNzI3QUZFRDMxQTJF
QTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNS
R0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NDIzRDY4NkE2MDBD
QzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2
MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
cmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MkUyNTMxM0Uy
NjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzI5RDA1MzkyNTMyRDJFNzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlUHRyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFD
M0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdl
QnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1
ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTYyM0Ux
NzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjYyMjAsOCArMjYyMjMsOCBAQAogCQkJCTA3QjkzRkY5MjNCOTJBQUEwMDM2
RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi8sCiAJCQkJMzE0QkUzQTQxQjMxMDNGQjAwMTQxOTgy
IC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTUxQjMxMDNG
QjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovLAotCQkJCTZCMzQ4MDky
MEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovLAogCQkJCTU1QTMzNkY2MUQ4MjA5
RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAorCQkJCTcyOUQwNTM5MjUzMkQyRTcwMDQy
MjA5OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0
RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5o
ICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUu
Y3BwICovLApAQCAtMjYyMzksNiArMjYyNDIsNyBAQAogCQkJCTA3NEU4MkI5MThBNjlGMEUwMDdF
RjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4MDBE
OEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyog
UmVnaW9uLmggKi8sCisJCQkJNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllci5oICovLAogCQkJCTA3M0ExNTUxMjE3N0EzOTgwMEVBMDhGMiAvKiBSZW1v
dGVWaWRlb1NhbXBsZS5jcHAgKi8sCiAJCQkJMDczQTE1NTMyMTc3QTM5QTAwRUEwOEYyIC8qIFJl
bW90ZVZpZGVvU2FtcGxlLmggKi8sCiAJCQkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJl
bmRlcmluZ01vZGUuaCAqLywKQEAgLTMzMTY4LDcgKzMzMTcyLDggQEAKIAkJCQkzMTRCRTNBNzFC
MzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1h
Z2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUQwNTNDMjUzMkVFRTMwMDQyMjA5OCAvKiBOYXRp
dmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1M0QyNTMyRUY5MTAwNDIyMDk4IC8q
IE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBB
MDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMw
Qjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtMzM1NDEsNiArMzM1NDYsNyBAQAogCQkJCTQ2Qjk1MTlBMjA3RDYzNTQw
MEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZD
RDdDMDAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMz
MTJFQjIyRkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQy
NjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZD
MEQ4RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNDM5YjZh
OWQ3ZDgxMjBkOTFlMWUxYWZjNTZkMWFhZjZiZTBiNDllNC4uNjJmNTlkNjkyYjdmMzZkNjk5NTc0
YWQ1MGM4MThmOTk5NzNkNzI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAg
LTYwMSwxMCArNjAxLDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2Vk
KGNvbnN0IEltYWdlJiwgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0KIAorICAgIHZvaWQgZHJhd05h
dGl2ZUltYWdlKGNvbnN0IEltYWdlJiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgIH0KKwogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFn
ZSYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3Qg
SW1hZ2UmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZh
aWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCog
PSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdl
JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSBvdmVycmlkZSB7IH0KKwogICAgIHZvaWQgY2hhbmdl
ZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGUg
eyB9CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJy
aWRlIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApp
bmRleCA1Y2M5MzM4MzI1NzRkY2JlYmVkODJjMmMwYmNlOGYwMGMyYmNhNzJlLi44MmQyOTE5Yzgz
Y2E3YzQwYmViM2Y5MDJmOGM2Yzc4YmVlN2ViZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQxMSw2ICs0MTEsMTcgQEAgdm9pZCBDYWNoZWRJ
bWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6ZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdl
JiBpbWFnZSwgbG8KICAgICAgICAgY2FjaGVkSW1hZ2UtPmRlY29kZWRTaXplQ2hhbmdlZChpbWFn
ZSwgZGVsdGEpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZm9yIChh
dXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpIHsKKyAgICAgICAgaWYgKCZpbWFnZSAh
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucywgY2FjaGVkSW1hZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1h
Z2VPYnNlcnZlcjo6ZGlkRHJhdyhjb25zdCBJbWFnZSYgaW1hZ2UpCiB7CiAgICAgZm9yIChhdXRv
IGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCkBAIC00MzQsNiArNDQ1LDEyIEBAIHZvaWQg
Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVBdmFpbGFibGUoY29u
c3QgSW1hZ2UmIGltYWdlLCBJCiAgICAgICAgIGNhY2hlZEltYWdlLT5pbWFnZUZyYW1lQXZhaWxh
YmxlKGltYWdlLCBhbmltYXRpbmdTdGF0ZSwgY2hhbmdlUmVjdCwgZGVjb2RpbmdTdGF0dXMpOwog
fQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpuYXRpdmVJbWFnZVdp
bGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBu
YXRpdmVJbWFnZSkKK3sKKyAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdl
cykKKyAgICAgICAgY2FjaGVkSW1hZ2UtPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGltYWdl
LCBuYXRpdmVJbWFnZSk7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2
ZXI6OmNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0
KQogewogICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQpAQCAtNjg5
LDYgKzcwNiwxNiBAQCB2b2lkIENhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0
IEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSBhbgogICAgICAgICBtX2NsaWVudHNX
YWl0aW5nRm9yQXN5bmNEZWNvZGluZy5jbGVhcigpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpu
YXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSkKK3sKKyAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZElt
YWdlQ2xpZW50PiBjbGllbnRXYWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkSW1h
Z2VDbGllbnQqIGNsaWVudCA9IGNsaWVudFdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+
bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQobmF0aXZlSW1hZ2UpOworfQorCiB2b2lkIENhY2hl
ZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgSW50UmVjdCog
cmVjdCkKIHsKICAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDcyZDU5YzFmZjQ4NDVjMjMyNzU5MjBiYzhkMTJm
MjczNDMyN2Y3MmMuLjg2Nzk4MzJhNGNjMTBiYzY0ZjdhM2U1NGIyNTliZTUzZmE3MTI4ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xNDksMTAgKzE0
OSwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2Vk
KGNvbnN0IEltYWdlJiwgRW5jb2RlZERhdGFTdGF0dXMpIGZpbmFsOwogICAgICAgICB2b2lkIGRl
Y29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgZmluYWw7CisK
KyAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRHJhdyhjb25z
dCBJbWFnZSYpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNv
bnN0IEltYWdlJikgZmluYWw7CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25z
dCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3Qg
PSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5h
bDsKKyAgICAgICAgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYs
IGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgZmluYWw7CisKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5S
ZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgZmluYWw7CiAKQEAgLTE2NCw2ICsx
NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpOwogICAgIGJv
b2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJik7CiAgICAgdm9pZCBpbWFnZUZy
YW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0
dXM6OkludmFsaWQpOworICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3Qg
SW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChj
b25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKGNvbnN0IEltYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggYmE2NDQ1YjdlYTdlZDk2M2Q2MWJmZjMwZjI4YTlh
NGVkN2Y5YzEzNi4uMjFhYWYwN2YxYmI1ZDUzYjkyOTQyMjRiNjQ0MzcyYWJkMzUyYjAxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKQEAg
LTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiSW1hZ2VUeXBlcy5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNiArNDgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVk
IHdoZW4gYSBuZXcgZGVjb2RlZCBmcmFtZSBmb3IgYSBsYXJnZSBpbWFnZSBpcyBhdmFpbGFibGUg
b3Igd2hlbiBhbiBhbmltYXRlZCBpbWFnZSBpcyByZWFkeSB0byBhZHZhbmNlIHRvIHRoZSBuZXh0
IGZyYW1lLgogICAgIHZpcnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZh
aWxhYmxlKENhY2hlZEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogY2hhbmdlUmVjdCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBjaGFuZ2VSZWN0KTsgcmV0
dXJuIFZpc2libGVJblZpZXdwb3J0U3RhdGU6Ok5vOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF0
aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgTmF0aXZlSW1hZ2VQdHImKSB7IH0KKwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2Fj
aGVkSW1hZ2UmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgK
aW5kZXggYTE0MTNjNmY2NzliMTVlOTA3YzdiNmNmYTc2MDVmMjcwZTJmOTU1Ny4uNTc0NDdmZjFh
ZjA0NmM2NDhlODRkOTc2YWJmMDA2MTBiZjAwMjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTI0LDcgKzI0LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGI0
NzZhMzViODJkOTM3MDhkM2IwZjJiNGQxYTZkMjU0ODEyZDBlMTEuLjBhZjZjM2Q4YjIzMTg1MTc3
ODliMDcyMzQ1Zjk2NzQzYjFkN2Y2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJC
aXRtYXBJbWFnZS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0
cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTIwNCw2ICsyMDUs
MjQgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShCaXRtYXBJ
bWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQoreworICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVz
IGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KKyAgICBJbnRTaXplIHN1YnNh
bXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUobmF0aXZlSW1hZ2UpOworICAgIGlmIChv
cHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKKyAgICAgICAgc3Vic2Ft
cGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKKwor
ICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQg
aW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgorICAg
IEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1wbGVk
SW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qo
c3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBs
ZWRJbWFnZVNpemUpKTsKKworICAgIGlmIChpbWFnZS5pbWFnZU9ic2VydmVyKCkpCisgICAgICAg
IGltYWdlLmltYWdlT2JzZXJ2ZXIoKS0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBu
YXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShu
YXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1wdHkoKSkKQEAgLTI5
Miw5ICszMTEsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRp
b24gPSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdl
KGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKG9yaWVudGF0
aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFn
ZSgqdGhpcywgY29udGV4dCwgaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUo
b3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwg
SW50U2l6ZShzaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UoKnRoaXMsIGNvbnRleHQsIGltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShz
aXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGlu
Z1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIApA
QCAtMzc5LDcgKzM5OCw3IEBAIFN1YnNhbXBsaW5nTGV2ZWwgQml0bWFwSW1hZ2U6OnN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZUZhY3RvcihHcmFwaGljc0NvbnRleHQmIGNvCiB7CiAjaWYgVVNFKENH
KQogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBE
RiBjb250ZXh0cy4KLSAgICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpKSA9PSBrQ0dDb250ZXh0VHlwZVBERikKKyAgICBpZiAoY29udGV4dC5oYXNQbGF0Zm9y
bUNvbnRleHQoKSAmJiBDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkp
ID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICByZXR1cm4gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3RkOjptaW4oZmxvYXQoMSksIHN0ZDo6bWF4
KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9yLmhlaWdodCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCA1NTVjYzY2NDU3MGEzNGJlYTk5NWRlY2NkNTJhYzg2MWY1ZmUzMTQ0Li43MTEzZDdmNjRlMWE3
NjI4OTgxZmMwOTk2ZmQ2OGQ4Njg1MjZiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTczMSw2ICs3MzEsMTkg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKQoreworICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2ltcGwpIHsKKyAgICAg
ICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICBy
ZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUo
KSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdP
cHRpb25zKTsKQEAgLTc0Nyw3ICs3NjAsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbgogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6
OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmIChtX2ltcGwgJiYgaW1hZ2Uu
aXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShp
bWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMs
IG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CkBAIC03NTksNyArNzcyLDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkK
KyAgICBpZiAobV9pbXBsICYmIGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICBy
ZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwg
dGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25z
LmludGVycG9sYXRpb25RdWFsaXR5KCkpOwpAQCAtNzcyLDcgKzc4NSw3IEBAIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYg
KG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1f
aW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2Fs
ZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zKTsKIAogICAgIGlmIChoUnVsZSA9PSBJbWFn
ZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CkBAIC03OTks
NiArODEyLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+ZHJh
d0ltYWdlQnVmZmVyKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9s
YXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFs
aXR5KCkpOwogICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlv
bnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAppbmRleCBkYjRjMDAyZWNjZDIyZTZmZTk0MDg3YzY5ZjkxMjhkNDI4OTkyN2Jm
Li4yNTE5ZDdiZWExODIxOTg3ZjcxYmE3MGY0NDFmMmZmYjA1ZDJiZjAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODYs
NiArODYsNyBAQCBjbGFzcyBHbHlwaEJ1ZmZlcjsKICNlbmRpZgogCiBjbGFzcyBBZmZpbmVUcmFu
c2Zvcm07CitjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFz
cyBHcmFkaWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEltcGw7CkBAIC0zMzQsMTAgKzMzNSw2
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAotI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8
fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSk7Ci0jZW5kaWYKLQogI2lmIFVTRShDRykgfHwgVVNFKERJUkVD
VDJEKQogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAgdm9pZCBhcHBseUZpbGxQ
YXR0ZXJuKCk7CkBAIC0zODMsNiArMzgwLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9LCBDYWNoZWRJbWFnZSogPSBudWxscHRyKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIElt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpG
cm9tSW1hZ2UgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CkBAIC02NTIsNiArNjUxLDggQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7CiAKKyAgICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpOworCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRz
QW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGlu
ZywgQ29sb3ImKTsKIAogICAgIGZsb2F0IGRhc2hlZExpbmVDb3JuZXJXaWR0aEZvclN0cm9rZVdp
ZHRoKGZsb2F0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzZDUwNzViY2VkY2JmNTAyODcxY2Q1
NTA5MzVmNTFhYzhkYjJmNTVjLi5mNDRkOWU1NDNhMzk0NDAzOWZlOThmZTM0YzA4MzI5NTkzNGMy
ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5oCkBAIC03Miw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwg
VVNFKERJUkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgPSAwOwotI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IGQzOWZlYWE4MmYzNzFjZjhh
YWY3NmQyN2YzMzU3M2YzNTE5OGQwODkuLmVhNGQ2M2E5NGVkNmNmMDIyM2ZkOWVhMDUwODhhMzdi
ZDcxMmQ2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAt
MzIsOCArMzIsOSBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VQ
YWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCi0jaW5jbHVkZSAiTmF0
aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KQEAgLTcyLDcgKzczLDYgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLXN0
cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xh
c3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2Rl
ZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGQxNDY0OTJj
NGE4ZGY5MzVjYWY5NGI5ZmI5NTU5MDlhYWQxY2JhZjAuLmRiZTAyNWVlOWUxYTQ0MGYwMmVhOTY2
NGEzNGY5OGEwZjZjNTFhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBEcmF3
aW5nQ29udGV4dDsKIH0KIApAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IERpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmKSB7IH0KIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zv
cm0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3Qg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaAppbmRleCBjMDEwYTBmMGNmY2Q4YzVlN2FiNmM5NGM1YzNjMzZmNDgzODZk
MDFmLi41OGZjMTQ4MzZkOTJhYTIwMDE5ZjIwZmVlZGM1NTcxZTlhYjVlOTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aApAQCAtMzEsMTMgKzMxLDE0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5j
bHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogY2xhc3MgSG9zdFdpbmRvdzsK
IGNsYXNzIEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VPYnNlcnZlci5oCmluZGV4IDhiMDg5ZTU5NGMxYWZjY2VlNGZmYjUwNzExNTk3ODc0Njk1Y2Iy
ZGUuLmI0ZDcxMGFjNjczMGM4NWRmZWVhNzVlYWIwZjNkYjY2NzZmNjBmMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTQ1LDEw
ICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hh
bmdlZChjb25zdCBJbWFnZSYsIEVuY29kZWREYXRhU3RhdHVzKSB7IH07CiAgICAgdmlydHVhbCB2
b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgPSAw
OwogCisgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYsIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERyYXcoY29uc3QgSW1hZ2UmKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuRGVzdHJveURl
Y29kZWREYXRhKGNvbnN0IEltYWdlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1l
QXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVj
dCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6
OkludmFsaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95
ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpID0gMDsKKwogICAgIHZpcnR1
YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogY2hhbmdl
UmVjdCA9IG51bGxwdHIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoY29uc3QgSW1hZ2UmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc3NTAzMjIzOWE1ZDVhYmFhNzYzZjdh
MjYzZWQ3Y2IyNDU5ODI2NTIuLjQ1NTE1YzU5YTFmZjI4NGNkOGQyODAzODM3YjA4NWI1MDIyZDZj
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKQEAgLTEzMCw4ICsxMzAsMTAgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29k
ZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKQogICAgIEFTU0VS
VChmcmFtZUNvdW50IDw9IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgZnJhbWVDb3VudDsgKytpbmRleCkgewotICAgICAgICBpZiAoaW5kZXgg
PT0gZXhjbHVkZUZyYW1lKQorICAgICAgICBpZiAoaW5kZXggPT0gZXhjbHVkZUZyYW1lIHx8ICFt
X2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkpCisgICAgICAgICAg
ICBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCktPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKCpt
X2ltYWdlLCBtX2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSk7CiAgICAgICAgIGRlY29kZWRT
aXplICs9IG1fZnJhbWVzW2luZGV4XS5jbGVhckltYWdlKCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCA2YjJkODFlMzVi
MDhjZjc0ZjRmMzYxYWViYzc0ZjMxMjljN2Q5YjdmLi40MzM3ODc5MGIyMjkxZWEwMGIxMjA4ZTBh
NWNiYzk3MjlmNzcxZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLgogICoKQEAgLTI3LDUyICsyNywxNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCi0KLSNpZiBV
U0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFn
ZSogQ0dJbWFnZVJlZjsKLSNlbGlmIFVTRShDQUlSTykKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5o
IgotI2VsaWYgVVNFKFdJTkdESSkKLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKLSNlbmRpZgot
Ci0jaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgPGQyZDEu
aD4KLSNpbmNsdWRlIDx3aW5jb2RlYy5oPgotI2VuZGlmCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQ
dHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEZsb2F0
UmVjdDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci0KLSNpZiBVU0Uo
Q0cpCi10eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlm
IFVTRShESVJFQ1QyRCkKLXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0
cjsKLSNlbGlmIFVTRShDQUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0
aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0
bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIG5h
dGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogYm9vbCBuYXRpdmVJbWFnZUhh
c0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotCi12b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBzY2FsZUZhY3RvciwgY29u
c3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpOwotCiB2b2lk
IGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLQotY2xh
c3MgTmF0aXZlSW1hZ2VIYW5kbGUgewotcHVibGljOgotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdl
OwotfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3NTE0
MDcxZDA3Yzk1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0Uo
Q0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSog
Q0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgor
I2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit0eXBlZGVmIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK3R5cGVkZWYgQ09N
UHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShDQUlSTykKK3R5cGVk
ZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBVU0UoV0lO
R0RJKQordHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbmRp
ZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhZjU0MmRmZWM4NDdhYmMz
NzFhYTJmMWU4ZTRiOGRkOWZiMTEwZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAtMCwwICsx
LDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2VudW0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZVJlc291cmNl
SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYTEw
NDY1NmNiNWQ1ZGRlYTAzMjFkYWE0NGEwNDQ2NTE3NTA4OGU0Zi4uMmFiOWNlM2JiYTI1ZWE1NDg1
NDQ4ZjM0YWE3NzdhZmUwNGU3MzRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApA
QCAtMTIzLDE2ICsxMjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3
UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmls
bENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1f
aW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQbGF0
Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENh
aXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVz
dFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBiNjViNGQ2NDQwNmJlYjc2YzQwOWQzZThj
NjU0OTc1Y2E5ZjdlYjYzLi5mZTkwNDk1MjdhZmVjZWRiMTdiODFmNjJjNDZlOGYyNzFkYjgyNzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI3OSwxMyArMjc5
LDE5IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdUaWxl
ZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50
aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucywgQ2FjaGVkSW1hZ2UqKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwog
ICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKICAgICBDYWlybzo6
ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBz
dGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK2Jvb2wgR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
Cit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCBlNWUy
MDc0OGM2ZDc2MjBmMTBjZjIxNTY2MjhlZjdlMGJlNjAxYzdiLi4yYzFjNzAxNTRjMWZhNDY2MDcy
Y2U3MjJmZjY0MzY2ZjVhZTk3OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aApAQCAtNzQsNyArNzQsOSBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1h
Z2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworCisgICAgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYsIENhY2hlZEltYWdlKikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVhMzdjNzg2ZWY2
ZGI2ZTVhZmViOTE3Nzk4ZmE1MzFiZjk4YWM4NGQuLmMyOTJkYjQyY2MwZjlmMGY5YzQ3Yzc4ZWQ2
OWMyZDgzMzFjOTgyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4MCwxNiArMjgwLDExIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRh
LT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENH
SW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
aW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
ICNpZiAhTE9HX0RJU0FCTEVECiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAppbmRleCA1Y2M1YzIwN2I0NGE0ODM1YmUy
ZTA4MDI4YTNhNzEwOTVhNTVlMWUwLi40MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRl
YmRhZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9O
YXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgog
I2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKQEAgLTY5LDQwICs2OCw2IEBAIENv
bG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKICAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFsw
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAq
IDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewot
ICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21h
bGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRp
dmVJbWFnZVNpemUoaW1hZ2UpOwotICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dp
ZHRoQXNIZWlnaHQoKSkKLSAgICAgICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJ
bWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKLQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNv
b3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0
IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3Qg
PSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0gICAg
ICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3Jj
U2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKLX0KLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3Qm
IHNvdXJjZSkKLXsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKTsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAgICBD
R0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCks
IGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOwotICAg
IENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBpbWFn
ZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7Ci0g
ICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNj
YWxlRmFjdG9yOwotCi0gICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJj
ZS54KCk7Ci0gICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnko
KSArIHNvdXJjZS55KCk7Ci0KLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1Jl
Y3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQo
KSk7Ci0KLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Ci19Ci0KIHZvaWQg
Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7
CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGE2MzgzNjky
MWQ4ZGZjYTE2NjM4YmQ4NmFhOTMzZWZhN2UyNjRkODEuLmIzNTg5M2M1ODJlNDE3YzJiYjMzNTJh
NTE2ZTNjYjU5ZmUwMjQzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02Miw4ICs2Miw5
IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3SW1hZ2UsCiAgICAg
RHJhd1RpbGVkSW1hZ2UsCiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENHKSB8
fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIERyYXdJbWFnZUJ1ZmZlciwKICNlbmRpZgogICAgIERy
YXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd2luZ0NvbnRleHQuY3BwCmluZGV4IDIzY2MwN2U4YWU0NDJiZGNlYTBkMzY3NGE1YTg1
NTFjNjVjZmRjODcuLmQ0NjE3ZDM1MTZmNGYzZTUxZDc1ZDY0NDM0YTZhMzk0NTdhMDAwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKQEAg
LTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpP
YnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RN
LCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KFsmXShHcmFw
aGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0s
IG9ic2VydmVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlM
aXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRS
ZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBkZWxlZ2F0ZSk7CiAgICAgfSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmluZGV4
IDdiNjczZjMyYWQ4MTVhNTAwODFiN2U3YWIxMDgxMzE3MTdmZGU1NDMuLjIyZWQyNTZlODBhZDI5
M2EwNTIwNjliNzQzMDg4YTEzNTFmNDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QgewogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9
IHsgfSwgUmVjb3JkZXI6Ok9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JU
IERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51bGxw
dHIpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29u
c3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBSZWNvcmRlciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlci5oCmluZGV4IDZmZDkxMmRmYjhmZTExYzA5OGRkNjEyNmE4Yzg3OGFjNmJh
N2FlMDIuLjMyNTk5ZTA2MmQ3Y2Y1OWQxZGMyZWFkMDFlNzYwZDY2ZTNmN2VjM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRl
SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVyIHsKK2Ns
YXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+
IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZm
ZXI8QmFja2VuZFR5cGU+OwogCiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGljOgog
CiAgICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNr
ZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChz
aXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAgICwgbV9k
cmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCiAgICAg
ewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAg
ICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXpl
KSwgdGhpcykKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29yZGVy
OjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IG1fZHJhd2luZ0NvbnRl
eHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkKICAgICB7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMThkNzBj
ZmJkMjQwOTg1ODY4NDQ5ZmIzNTlhOWY4NWViZGZkMzYzNi4uZjE1Yzc3MGUxZGE0ZDUxZjVmYTQ2
NjFlN2M1MGQ3NDA0ZjM0YWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAi
SW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBVU0UoQ0cp
CkBAIC0xMDYsOSArMTA1LDExIEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVt
JiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZEltYWdlPihp
dGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAgICAg
IHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0pKTsKLSNp
ZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVt
KSk7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+
KGl0ZW0pKTsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAg
ICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CkBAIC03MDMsMzIg
KzcwNCwyMiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi0j
aWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLURyYXdOYXRpdmVJbWFn
ZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3
TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCi0jaWYg
VVNFKENHKQotICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBDYWlyby4K
ICAgICAsIG1faW1hZ2UoaW1hZ2UpCi0jZW5kaWYKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6
ZSkKICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNy
Y1JlY3QpCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKIHsKLSNpZiAhVVNFKENHKQotICAgIFVO
VVNFRF9QQVJBTShpbWFnZSk7Ci0jZW5kaWYKIH0KIAogRHJhd05hdGl2ZUltYWdlOjp+RHJhd05h
dGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotI2lmIFVTRShDRykKLSAgICBjb250ZXh0
LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3Qs
IG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OwotI2VuZGlmCisgICAgQVNTRVJUKG5hdGl2ZUltYWdlUHRyKCkpOworICAgIGNvbnRleHQuZHJh
d05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlUHRyKCksIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
UmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQpAQCAt
NzM5LDYgKzczMCwzMyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CiAgICAgcmV0dXJuIHRzOwogfQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorRHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1hZ2VCdWZm
ZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXIpCisgICAgLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcihyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkK
KyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9
CisKK0RyYXdJbWFnZUJ1ZmZlcjo6fkRyYXdJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKKwordm9p
ZCBEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAg
Ly8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzIDw8IHN0YXRpY19jYXN0
PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUt
cmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOwor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0
cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAg
IHJldHVybiB0czsKK30KICNlbmRpZgogCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTQ2OSw4ICsxNDg3LDkgQEAgc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTogdHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2Ui
OyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogdHMgPDwg
ImRyYXctdGlsZWQtc2NhbGVkLWltYWdlIjsgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJ
Uk8pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRp
dmUtaW1hZ2UiOyBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsK
ICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0
ZXJuIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJl
Y3QiOyBicmVhazsKQEAgLTE1NzEsMTAgKzE1OTAsMTMgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2Nh
bGVkSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlS
TykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGRv
d25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAg
ICAgIHRzIDw8IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oaXRlbSk7CisgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8
IGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCmluZGV4IGNiNjg0ZDIzY2U3NWI0ZmFiOWVjNDEzMTYyN2FjZDMyZDYyNGFlZGIuLjNiNjRk
M2JhMzQwNzU0NjAzMWVlOWJiMGNhYTMyNzY1OWY5NTRkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIK
KyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAgLTE0MzIsMzIgKzE0MzMs
NTIgQEAgT3B0aW9uYWw8UmVmPERyYXdUaWxlZFNjYWxlZEltYWdlPj4gRHJhd1RpbGVkU2NhbGVk
SW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKICAgICByZXR1cm4gRHJhd1RpbGVkU2NhbGVk
SW1hZ2U6OmNyZWF0ZSgqaW1hZ2VIYW5kbGUtPmltYWdlLCAqZGVzdGluYXRpb24sICpzb3VyY2Us
ICp0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgKmltYWdlUGFpbnRpbmdPcHRpb25zKTsK
IH0KIAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiBjbGFzcyBE
cmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgdXNpbmcgTmF0aXZlSW1hZ2VUeXBl
ID0gVmFyaWFudDxOYXRpdmVJbWFnZVB0ciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKwor
ICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlbW90ZVJl
c291cmNlSWRlbnRpZmllcj4obV9pbWFnZSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPihtX2ltYWdlKTsK
KyAgICB9CisKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZVB0cigpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TmF0aXZlSW1hZ2VQdHI+KG1f
aW1hZ2UpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6
OmdldDxOYXRpdmVJbWFnZVB0cj4obV9pbWFnZSk7CisgICAgfQorI2Vsc2UKKyAgICB1c2luZyBO
YXRpdmVJbWFnZVR5cGUgPSBOYXRpdmVJbWFnZVB0cjsKKworICAgIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQorI2VuZGlmCisgICAgc3Rh
dGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogICAg
IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpOwogCisg
ICAgRmxvYXRTaXplIGltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAg
ICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZs
b2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVj
dDsgfQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X29wdGlvbnM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAg
IFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAg
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotI2lmIFVTRShDRykK
LSAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwotI2VuZGlmCisgICAgTmF0aXZlSW1hZ2VUeXBl
IG1faW1hZ2U7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rl
c3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTQ2NywxMCArMTQ4
OCw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotI2lmIFVTRShDRykKLSAg
ICBOYXRpdmVJbWFnZUhhbmRsZSBoYW5kbGUgeyBtX2ltYWdlIH07Ci0gICAgZW5jb2RlciA8PCBo
YW5kbGU7Ci0jZW5kaWYKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2U7CiAgICAgZW5jb2RlciA8PCBt
X2ltYWdlU2l6ZTsKICAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OwogICAgIGVuY29k
ZXIgPDwgbV9zcmNSZWN0OwpAQCAtMTQ4MCwxMiArMTQ5OCwxMCBAQCB2b2lkIERyYXdOYXRpdmVJ
bWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgogT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0jaWYgVVNFKENHKQotICAgIE9wdGlvbmFsPE5hdGl2
ZUltYWdlSGFuZGxlPiBoYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgaWYgKCFo
YW5kbGUpCisgICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VUeXBlPiBpbWFnZTsKKyAgICBkZWNvZGVy
ID4+IGltYWdlOworICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0jZW5kaWYKIAogICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1hZ2VTaXplOwogICAgIGRlY29k
ZXIgPj4gaW1hZ2VTaXplOwpAQCAtMTUwNywxNCArMTUyMyw3NSBAQCBPcHRpb25hbDxSZWY8RHJh
d05hdGl2ZUltYWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBpZiAoIW9wdGlvbnMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSNpZiBV
U0UoQ0cpCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBoYW5kbGUtPmltYWdlOwotI2Vsc2UK
LSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IG51bGxwdHI7Ci0jZW5kaWYKLSAgICByZXR1cm4g
RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJl
Y3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CisgICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3Jl
YXRlKCppbWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRp
b25zKTsKIH0KLSNlbmRpZgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorY2xhc3MgRHJhd0lt
YWdlQnVmZmVyIDogcHVibGljIERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PERyYXdJbWFnZUJ1ZmZlcj4gY3JlYXRlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdJbWFnZUJ1ZmZlcihyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKTsKKyAgICB9
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3SW1hZ2VCdWZmZXIoKTsKKworICAg
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsgfQorICAgIEZsb2F0UmVjdCBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGlu
YXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFn
ZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3SW1h
Z2VCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJl
Y3Q7IH0KKworICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRl
bnRpZmllcjsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgRmxvYXRSZWN0
IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9OworCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9yZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBlbmNvZGVy
IDw8IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fb3B0aW9uczsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBEcmF3SW1hZ2VC
dWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFJlbW90ZVJl
c291cmNlSWRlbnRpZmllcj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIg
Pj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlm
ICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IHNvdXJjZTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZTsKKyAgICBpZiAo
IXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPElt
YWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAg
ICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gRHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUoKnJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgKmRl
c3RpbmF0aW9uLCAqc291cmNlLCAqb3B0aW9ucyk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJs
aWM6CkBAIC0yOTczLDEwICszMDUwLDEzIEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KCp0aGlzKTsK
ICAgICAgICAgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1Qy
RCkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIGVuY29kZXIg
PDwgZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6
CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPigqdGhpcyk7Cisg
ICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KCp0aGlzKTsKQEAgLTMxNjQs
MTEgKzMyNDQsMTUgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdUaWxlZFNjYWxlZEltYWdlOjpk
ZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBV
U0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShk
ZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4o
V1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBpZiAoYXV0byBp
dGVtID0gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAg
YnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAg
aWYgKGF1dG8gaXRlbSA9IERyYXdQYXR0ZXJuOjpkZWNvZGUoZGVjb2RlcikpCkBAIC0zMzI2LDgg
KzM0MTAsOSBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ds
eXBocykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2Up
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkSW1hZ2Up
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkU2NhbGVk
SW1hZ2UpCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQorI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZm
ZXIpCiAjZW5kaWYKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3
UGF0dGVybikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3UmVj
dCkKQEAgLTMzODgsOCArMzQ3Myw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3SW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3VGlsZWRJbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdUaWxlZFNjYWxlZEltYWdlLAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElS
RUNUMkQpCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2UsCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAogI2VuZGlmCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CmluZGV4IGRkMzVlZjFhMjhhOTA3MWRhZWY5YTBhOGQ3N2Q5ODQwMWVhMDgwMWQuLjk1NTc1ZDBm
NDE0YzJlZGU1ZjE5MTAyMDA2ZTM2ZjVkODQ0YTQ3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM3LDEwICszNywxMCBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgT2JzZXJ2ZXIqIG9ic2VydmVyKQorUmVj
b3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRGVs
ZWdhdGUqIGRlbGVnYXRlKQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBpbml0
aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlM
aXN0KQotICAgICwgbV9vYnNlcnZlcihvYnNlcnZlcikKKyAgICAsIG1fZGVsZWdhdGUoZGVsZWdh
dGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJl
Y29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7CiAgICAgbV9zdGF0ZVN0YWNrLmFw
cGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKQEAgLTUyLDE1ICs1Miwx
NSBAQCBSZWNvcmRlcjo6flJlY29yZGVyKCkKICAgICBMT0coRGlzcGxheUxpc3RzLCAiUmVjb3Jk
ZWQgZGlzcGxheSBsaXN0OlxuJXMiLCBtX2Rpc3BsYXlMaXN0LmRlc2NyaXB0aW9uKCkuZGF0YSgp
KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6cHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VE
YXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3Jt
YXQpCit2b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBp
bnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24g
ZGVzdEZvcm1hdCkKIHsKLSAgICBhcHBlbmRJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJ
bWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9p
bnQsIGRlc3RGb3JtYXQpKTsKKyAgICBhcHBlbmRJdGVtKFB1dEltYWdlRGF0YTo6Y3JlYXRlKGlu
cHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCkpOwog
fQogCiB2b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJiBpdGVtKQogewot
ICAgIGlmIChtX29ic2VydmVyKQotICAgICAgICBtX29ic2VydmVyLT53aWxsQXBwZW5kSXRlbShp
dGVtKTsKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVu
ZEl0ZW0oaXRlbSk7CiAKICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkKICNpZiBVU0UoQ0cp
CkBAIC0xMzIsMTIgKzEzMiwyOSBAQCBJbWFnZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdUaWxl
ZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdAogICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlY29yZDsKIH0KIAotI2lmIFVTRShDRykgfHwgVVNFKENB
SVJPKSB8fCBVU0UoRElSRUNUMkQpCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UpCiB7CisgICAgaWYgKG1fZGVsZWdhdGUgJiYgY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAg
aWYgKGF1dG8gaXRlbSA9IG1fZGVsZWdhdGUtPmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oaW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsICpjYWNoZWRJbWFnZSkp
IHsKKyAgICAgICAgICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PERyYXdpbmdJdGVtPihpdGVtLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50
KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKSk7CiB9Ci0jZW5kaWYKKworYm9vbCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQoreworICAgIGlmICghbV9kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGF1dG8gaXRlbSA9IG1fZGVsZWdhdGUtPmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKSB7CisgICAgICAgIGFwcGVuZEl0ZW1B
bmRVcGRhdGVFeHRlbnQoc3RhdGljX3JlZmVyZW5jZV9jYXN0PERyYXdpbmdJdGVtPihpdGVtLnJl
bGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCA5ZWUxZDM5MzhmMjMyZjNmMThkOTc4YWY3MTg3MDFkOGJlNDYzMDcyLi5lMTQwYmUxMWQ3ZDZh
NzY2Njc5NjE1NjlkMTQ1YzRlMzM4NWMzZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTI4LDEyICsyOCwxNCBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbC5oIgogI2luY2x1ZGUgIkltYWdlLmgiIC8v
IEZvciBJbWFnZTo6VGlsZVJ1bGUuCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIDogdWludDhfdDsKK2NsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgRmxvYXRQb2ludDsKIGNs
YXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdseXBoQnVmZmVyOwpAQCAtNTMsOCArNTUsOCBAQCBjbGFz
cyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRJbXBsIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJs
aWM6Ci0gICAgY2xhc3MgT2JzZXJ2ZXI7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3Jh
cGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIE9i
c2VydmVyKiA9IG51bGxwdHIpOworICAgIGNsYXNzIERlbGVnYXRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwg
Y29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsKQEAgLTYzLDkgKzY1LDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChSZWY8RHJhd2luZ0l0ZW0+JiYp
OwogCi0gICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgfkRl
bGVnYXRlKCkgeyB9CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEl0ZW0+IGNyZWF0ZURyYXdJbWFn
ZUJ1ZmZlckl0ZW0oSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICAgICAgdmlydHVhbCBSZWZQdHI8SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgQ2FjaGVkSW1hZ2Um
KSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRl
bShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CiAKQEAgLTEwNCw5ICsxMDgsOSBAQCBwcml2YXRl
OgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7Ci0jZW5kaWYKKworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9h
dFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwpAQCAtMTg4LDcgKzE5Miw3
IEBAIHByaXZhdGU6CiAgICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAogICAgIERp
c3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIE9ic2VydmVyKiBtX29ic2VydmVyOworICAg
IERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgMzI+IG1f
c3RhdGVTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKaW5kZXggZjMxZDM3NWIwMmRhMDk3OTI4OWFjYzIwMGRkODYyZmFlMTM0MTA0Yi4uNGI1
ZTNlNDNiMDM5NjRhNTFjMjczZTViZTdhZWRiMGRmMWFhOTFmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNYWluVGhyZWFkTm90aWZpZXIuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDE4YjRm
OGRlOTcxNzBjZTY0NGViNjRiZTNlYWI4NTdmM2E3NDMyZjQuLjYyOThjZjM2MDczYzdhZTQ0ZjQz
YzZiNTY0NDIyYjM3Yjg2Y2YxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlclBpcGUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1
ZGUgIk5pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgogI2luY2x1ZGUgIk5p
Y29zaWFQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAKaW5kZXggMzA0ZmFjYmFiMTUyMTc5MWRhYTg2ZGIxNTMxNzUzZTM4
NjcxMDg0ZC4uNGUyNGVlYmFkYjY1ODdiYWM2MmExZjE1ZDUxZjZmODc2Y2RiYjQ4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAKQEAgLTU3MCw2ICs1NzAsMTIgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdAogICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4o
aW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0
aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWly
bzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1F
OiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0
aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9h
dFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxvYXRQb2ludCwgSW1hZ2VQYWludGluZ09wdGlvbnM+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaAppbmRleCA1NzJmZjIxNjZmNmU5NzNhNzYzYjY3Y2I2YmI5NmY0M2YyNmE4ZDUwLi4zODA5
M2Q0MTM1YjRkN2I2NTExYTE2MDg3YWZmMTNmNjAzZWQxM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02Nyw2ICs2Nyw4
IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShXZWJD
b3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6Oklt
YWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2Vi
Q29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJ
bWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CisKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6Oklt
YWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3Bw
CmluZGV4IDM3NDA3MTcxNWJjYjc5MWQ1ODlkNTBkOTliMjljNjZiMDEwYjcwODEuLjU3YmE4NThm
Zjk5YzJkYjI5ZjVkOTE0OTJlNmFhYzhlZDk3NGVjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERp
cmVjdDJELmNwcApAQCAtMjA3LDE2ICsyMDcsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJl
c3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBEaXJlY3QyRDo6cmVzdG9yZSgqcGxhdGZvcm1Db250
ZXh0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0
IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+JiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0
YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0
Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3RhdGUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMjQ3YTdhZDRjZDI5NTM4ZTRlYWY0MGJkODAzNjk2ODYw
MDhiODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhh
bmRsZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAi
UmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci0KLVJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6UmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHko
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICwgbV9pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotewotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eTo6Y3JlYXRlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUp
Ci17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuc2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRs
ZSksIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkucmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJG
bHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNvbW1p
dEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllciwgbV9pbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcigpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZDA1ZWFlZjU0OTQxNmZk
YjY0MjU5NTJlMGI0Y2YzYWEyMDVlYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUgIkltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZS5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVy
LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWVudW0gY2xh
c3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci1jbGFzcyBJbWFnZURhdGE7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk7Ci0KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KCkg
PSBkZWZhdWx0OwotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCi0gICAgdmlydHVhbCB2b2lkIGZsdXNo
RHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgot
ICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotCi0gICAgLy8gTWVzc2FnZXMg
dG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4uCi0gICAg
dm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk7Ci0gICAg
dm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIpOwotCi0g
ICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBiYWNrZW5kKCkgeyByZXR1cm4gbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7IH0KLQotcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwotICAgIEltYWdl
QnVmZmVySWRlbnRpZmllciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKaW5kZXggNzcyMWNjZTg0NTYyNjlhZWY5MDIwYjhiZDg5NjVkZDM1YjcyMmRkYy4u
MWQxYjVlZThmY2YwN2VmYzMyOWQ3OTgxZjNiMGExYWMyZWZiZTcxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCkBAIC0yOCwyOSArMjgsMjkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAiUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db25jcmV0
ZUltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4K
LWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6Q29uY3JldGVJ
bWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHksIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVn
YXRlIHsKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6Q29u
Y3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OkRlbGVnYXRlIHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogICAgIHVzaW5n
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0OwogICAgIHVzaW5nIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CisgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZm
ZXI6OnB1dEltYWdlRGF0YTsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVm
ZmVySWRlbnRpZmllcikKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHksIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PihzaXplLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSwgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0
ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oc2l6
ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2Vu
ZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHksIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2Vu
ZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHksIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShiYWNrZW5k
KSkKLSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkocmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgICAgICwg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQogICAgIHsKLSAgICAgICAgY3JlYXRlQmFja2VuZChtX2JhY2tlbmQtPmxvZ2ljYWxTaXplKCks
IG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9uU2NhbGUoKSwg
bV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlKCkpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW1v
dGVDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobV9iYWNrZW5kLT5sb2dpY2FsU2l6ZSgpLCBtX2Jh
Y2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxlKCksIG1fYmFj
a2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSgpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIH5SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5KCkKQEAgLTYyLDkgKzYyLDYgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hEcmF3aW5nQ29u
dGV4dDsKLSAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0SW1hZ2VEYXRhOwot
CiAgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAo
ZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpIHsKQEAgLTczLDE4ICs3MCw2IEBAIHByaXZhdGU6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQo
Y29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7Ci0gICAgICAgIG1fYmFj
a2VuZC0+Zmx1c2hDb250ZXh0KCk7Ci0gICAgICAgIGNvbW1pdEZsdXNoQ29udGV4dChmbHVzaElk
ZW50aWZpZXIpOwotICAgIH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZv
cm1hdCwgc3JjUmVjdCk7Ci0gICAgfQotCiAgICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKSB7CkBAIC05OCwxMiArODMsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuYXBw
bHlSZXNvdXJjZUl0ZW0oaXRlbSwgY29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhJiBpdGVtLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgewotICAgICAgICBhdXRvIHByb2Nlc3MgPSBi
YWNrZW5kKCkuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOworICAgICAgICBhdXRvIHByb2Nl
c3MgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCk7CiAgICAgICAgIGlmICghcHJvY2VzcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
MTE3LDYgKzEwMiw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgY29udGV4dC5wYWludEZyYW1lRm9y
TWVkaWEoKnBsYXllciwgaXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICB9CisKKyAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CmluZGV4IDc1M2E1YzhiYTk3ZmU3MjA4MzEwNThlODRjNWNkODNiNGIxNzU1NzkuLmMxYTMxY2Jj
OTRiNjA2YjUwZDQxZjk5YzUwMjI3MDRkZWFlZDczOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1l
c3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNiArNTQsMTEgQEAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Ojp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkKICAg
ICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKIH0KIAorR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCiBJUEM6OkNvbm5l
Y3Rpb24qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdAogewogICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0g
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQpAQCAtNjYsNjQgKzcxLDQ2IEBAIHVp
bnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRv
VUludDY0KCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQorYm9vbCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKERpc3BsYXlMaXN0OjpJ
dGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byogZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsK
LSAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuY29udGFpbnMoaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6
OlJlbW90ZUFjY2VsZXJhdGVkKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gQWNj
ZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMsIGltYWdlQnVmZmVySWRlbnRpZmllcikpIHsK
LSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdN
b2RlOjpSZW1vdGVBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6
OlJlbW90ZVVuYWNjZWxlcmF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
KSB7Ci0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuYWRkKGltYWdl
QnVmZmVySWRlbnRpZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmFwcGx5UmVzb3VyY2VJdGVtKGl0ZW0s
IGNvbnRleHQpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFz
ZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRlSW1hZ2VCdWZm
ZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFnZUJ1ZmZlciBt
ZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25lLgotICAgIGJv
b2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3ZlKGltYWdlQnVm
ZmVySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgV1RGTW92ZShoYW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1h
Z2VCdWZmZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRh
UmVmZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBt
X2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikp
IHsKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKG91
dHB1dEZvcm1hdCwgc3JjUmVjdCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1h
Z2VEYXRhUmVmZXJlbmNlKFdURk1vdmUoaW1hZ2VEYXRhKSkpOwotICAgIH0KKyAgICBtX3JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcmVhdGVJbWFnZUJ1ZmZlcihsb2dpY2FsU2l6ZSwgcmVuZGVy
aW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFn
ZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50
aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZl
ckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAgIGltYWdlQnVm
ZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICBtX3JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyIGZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVy
SWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdl
QnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1
c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1
ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgZmx1c2hJZGVu
dGlmaWVyKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5mbHVzaERyYXdpbmdDb250
ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNvbW1pdEltYWdlQnVmZmVy
Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllciwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpIGNvbnN0Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VE
YXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3Jl
OjpJbnRSZWN0IHNyY1JlY3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVu
Y2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5nZXQoKTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlLCBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4
IGEwOTUyYmFmYjNjMTUzMmQ3ZGM5OTAwNmViNDBmMzFiZjkxZDI1M2IuLmFmOTYyNjJkYzMwN2Iz
NDdlYjJhZGVmZDAzNzVhNWY0N2IzMjZjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgKQEAgLTI4LDI0ICsyOCwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkltYWdl
QnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNp
bmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXpl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiB9CitjbGFzcyBG
bG9hdFNpemU7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51bSBjbGFzcyBS
ZW5kZXJpbmdNb2RlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw4
ICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyOyB9CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcygpIGNvbnN0OworICAgIGJvb2wgYXBwbHlSZXNvdXJjZUl0ZW0oV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKworICAgIC8v
IE1lc3NhZ2VzIHRvIGJlIHNlbnQuCisgICAgdm9pZCByZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwpAQCAtNzQsMTQgKzc3LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2Vp
dmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZv
aWQgcmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgdm9pZCBm
bHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1
ZmZlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZl
cmVuY2UmJik+JiYpOwotCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcCA9
IEhhc2hNYXA8SW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Pj47Ci0gICAgSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlck1hcCBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgdm9pZCBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaElt
YWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZs
dXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVj
dCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOworICAgIHZvaWQgY2Fj
aGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgV2Vh
a1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA3OThjOGI0ZWRiNTdmNWFkMDgyYmE4MWMxMDA4YjBkY2RlZmRmMThhLi5iMzFj
YzY3M2U4YTNhOTMzNzg1Y2I2OWUxZjMzODgxZWExYTg0ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywxMiBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNw
YWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
Ci0gICAgdm9pZCBSZWxlYXNlSW1hZ2VCdWZmZXIoV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdp
bmdDb250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwg
V2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAg
IHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJbWFnZUJ1ZmZlckZs
dXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90
IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJ
bnRSZWN0IHNyY1JlY3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVy
SWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dp
Y2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICB2b2lk
IEZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaEltYWdlQnVmZmVyRHJhd2lu
Z0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3Bs
YXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKKyAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpIC0+
IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGltYWdlLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
IHZvaWQgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BV
X1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwYWY1OTY5
NWM0ZmQ5ODQ4ZWE0ZjJmNzlhODhkZmFhODI2MDg0YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKworI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICA6IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKK3sKK30K
Kwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKG1fcmVtb3Rl
SW1hZ2VCdWZmZXJIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlOworCisgICAg
aWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQpCisg
ICAgICAgIGltYWdlID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUo
bG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBpZiAoIWlt
YWdlIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRl
ZCkKKyAgICAgICAgaW1hZ2UgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAg
aWYgKGltYWdlKSB7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmFkZChyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2UpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitJbWFnZUJ1ZmZlciogUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaW1hZ2UgPSBtX3JlbW90
ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkgeworICAg
ICAgICBpbWFnZS0+Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAgICAgIHJl
dHVybiBpbWFnZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0ltYWdlQnVmZmVy
KiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQo
Y29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBp
bWFnZSA9IGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikpIHsKKyAgICAgICAgaW1hZ2UtPmZsdXNoQ29udGV4dCgpOworICAgICAgICByZXR1
cm4gaW1hZ2U7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8SW1hZ2VE
YXRhPiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBp
ZiAoYXV0byBpbWFnZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmdldEltYWdlRGF0YShvdXRw
dXRGb3JtYXQsIHNyY1JlY3QpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcC5h
ZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZSk7CisgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmRyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0m
IGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBhdXRvJiBkcmF3
SXRlbSA9IHN0YXRpY19jYXN0PGNvbnN0IERpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2UmPihp
dGVtKTsKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IGRyYXdJdGVtLnJlbW90
ZVJlc291cmNlSWRlbnRpZmllcigpOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGltYWdlID0gbV9yZW1vdGVOYXRp
dmVJbWFnZUhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKCFp
bWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIGRyYXdJdGVtLmltYWdlU2l6ZSgpLCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3Qo
KSwgZHJhd0l0ZW0uc291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZmZXJJ
dGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIGNvbnN0Cit7CisgICAgYXV0byYgZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBEaXNw
bGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyJj4oaXRlbSk7CisgICAgYXV0byByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgPSBkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICBp
ZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBpbWFnZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGltYWdlLT5kcmF3KGNvbnRleHQsIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBk
cmF3SXRlbS5zb3VyY2UoKSwgZHJhd0l0ZW0ub3B0aW9ucygpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKGNv
bnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0Cit7CisgICAgaWYgKGl0ZW0udHlwZSgpID09IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0ltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gZHJhd0ltYWdlQnVmZmVySXRlbShpdGVtLCBj
b250ZXh0KTsKKyAgICBpZiAoaXRlbS50eXBlKCkgPT0gRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpE
cmF3TmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBkcmF3TmF0aXZlSW1hZ2VJdGVtKGl0ZW0s
IGNvbnRleHQpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmIChtX3JlbW90ZUltYWdlQnVmZmVy
SGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGlmIChtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIENhY2hpbmcgdGhlIHJlbW90
ZSByZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0LgorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yM2U0MjJjOGFhZGNhNjUwM2QwZDY4M2YxMDRlZTNlYzZjYmViM2Q4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKK2NsYXNzIEl0ZW07Cit9Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisK
K2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7CitwdWJsaWM6CisgICAgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOworCisgICAgdm9p
ZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXIqIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1p
dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdl
dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKSBjb25zdDsKKworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CisKKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisKKyAgICB2b2lkIHJl
bGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwor
Citwcml2YXRlOgorICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SW1hZ2VCdWZmZXI+PjsKKyAgICB1c2luZyBSZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAgPSBI
YXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6TmF0aXZl
SW1hZ2VQdHI+OworCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXJJdGVtKGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Cisg
ICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisKKyAgICBSZW1vdGVJbWFn
ZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXA7CisgICAgUmVtb3RlTmF0
aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwOworICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IDQwMTdhMmE4ZjIyY2VjZWNjMjE1MWEzMGEzMjc4ZmY5MDZlYWYz
MmEuLjY3NDhkMWY1ZDgwMGQ5NTc0ZjIzODA3NWIxODkwYjRlNGFjZWU5MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRF
TEVHQVRFKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFn
ZVRyYW5zZmVyU2Vzc2lvblZULmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmNwcAppbmRleCA5NzdmOTNmZjVjM2MyYjgxNzg0NmM5YTlhNzU1MTc4OWM4ZWZl
MDVjLi42MWI4OTBkYzc4NjdjMzNiMDA1ZjIyZTkzYmIxYWY0N2RkZDNiMTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllck1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQppbmRleCBmYWNkMmY3YWZiNWEzOTJlZTIwOTY3YTc2ZmQ0MWUxNGRmYjE1MGI5Li4xNThj
NGVmOTdjMmU5OWI4NzY2NzkzNmViNDBhNWUxODc4ZDE4YjNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNywxMSArMjE3LDEzIEBAIGRlZiB0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1l
ZGlhUGxheWVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVu
dGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJywKICAgICAgICAgJ1dl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGll
bnRQb2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAgICAgJ1dlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlJlYWx0aW1lTWVkaWFT
b3VyY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpSZW5kZXJpbmdNb2RlJywKICAgICAgICAgJ1dlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2JJZGVudGlmaWVyJywKQEAgLTI0MCw3ICsyNDIsNiBAQCBkZWYgdHlwZXNfdGhhdF9j
YW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpHZW9sb2NhdGlv
bklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUn
LAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcicsCi0gICAgICAg
ICdXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OkxheWVy
SG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29s
SUQnLAogICAgICAgICAnV2ViS2l0OjpMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXInLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZTBi
YmJiYzViYTIzMThiZmE4ZTYzMTk2ZDU0ZWViYjg5MDM2NDQ0MS4uYTA3NzUzMDk1N2JhOGQ0N2Q1
NDI5YmFkZDY2NzU3NTU0ZDA2MjExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW1hZ2VIYW5kbGUm
IGltYWdlSGFuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVOYXRp
dmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBOYXRpdmVJbWFnZVB0ciBpbWFnZSkKK3N0YXRpYyB2
b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSkKIHsKICAgICBhdXRvIGltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFn
ZSk7CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShp
bWFnZVNpemUsIHsgfSk7CkBAIC0xMTQzLDcgKzExNDMsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgTmF0aXZlSW1h
Z2VQdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbE5h
dGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIE5hdGl2ZUltYWdlUHRyIGltYWdlKQorc3RhdGlj
IHZvaWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAgICAgYm9vbCBoYXNJbWFnZSA9ICEhaW1hZ2U7CiAg
ICAgZW5jb2RlciA8PCBoYXNJbWFnZTsKQEAgLTExNjYsMTQgKzExNjYsMTQgQEAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRGVjb2RlciYg
ZGVjb2RlciwgTmF0aXYKICAgICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1h
Z2UpOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VIYW5kbGUmIGltYWdlSGFuZGxlKQor
dm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICBlbmNvZGVPcHRpb25hbE5h
dGl2ZUltYWdlKGVuY29kZXIsIGltYWdlSGFuZGxlLmltYWdlLmdldCgpKTsKKyAgICBlbmNvZGVP
cHRpb25hbE5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKIH0KIAotYm9vbCBBcmd1bWVudENv
ZGVyPE5hdGl2ZUltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUlt
YWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFnZVB0
cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7Ci0g
ICAgcmV0dXJuIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2VIYW5kbGUu
aW1hZ2UpOworICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIsIGlt
YWdlKTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mIGZvbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDA1ZDAzNTU0YjllY2E5YTA0
MWMzNjhlZjQ1Mzg4MjQ0MzRjZTZlMjMuLjlmM2IxMDY2OTMzM2JhMzAxNTI5NzgzYzllMWU5MWVh
YmE0Y2FiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTZWxl
Y3Rpb25PcHRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlUHRyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRpbWVNZWRpYVNv
dXJjZS5oPgpAQCAtMTA1LDcgKzEwNiw2IEBAIGNsYXNzIEtleWZyYW1lVmFsdWVMaXN0OwogY2xh
c3MgTGF5b3V0U2l6ZTsKIGNsYXNzIExheW91dFBvaW50OwogY2xhc3MgTGluZWFyVGltaW5nRnVu
Y3Rpb247Ci1jbGFzcyBOYXRpdmVJbWFnZUhhbmRsZTsKIGNsYXNzIE5vdGlmaWNhdGlvbjsKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgUGF5bWVudEluc3RhbGxtZW50Q29uZmln
dXJhdGlvbjsKQEAgLTQxNiw5ICs0MTYsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKIH07CiAKLXRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGU+
IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2
ZUltYWdlSGFuZGxlJik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZShEZWNvZGVyJiwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGUmKTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHI+IHsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJik7Cisg
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggNzMwZGE2NDhmMmIyZmU5ZTc4NGZkMDQwNTJl
MTkwZjBkMGJmMjFhZC4uOTU5ZGE4M2Q1ZjY5ODhiMjExNTg4ZGE3ZGRiNGZmMTgzZGNlN2Q2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAt
MTA2LDEyICsxMDYsMjcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogCiB2b2lkIFNoYXJlYWJsZUJpdG1h
cDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBkcmF3TmF0aXZl
SW1hZ2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2Up
OworICAgIHBhaW50KGNvbnRleHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCiB2b2lk
IFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2UpCiB7Ci0gICAgZHJhd05hdGl2ZUltYWdlKG1ha2VDR0ltYWdlQ29weSgp
LCBjb250ZXh0LCBzY2FsZUZhY3RvciwgZGVzdGluYXRpb24sIHNvdXJjZSk7CisgICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjZ0Nv
bnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRpb24ueCgpLCBkZXN0aW5hdGlvbi55KCksIHNvdXJj
ZS53aWR0aCgpLCBzb3VyY2UuaGVpZ2h0KCkpKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0Nv
bnRleHQsIDEsIC0xKTsKKworICAgIGF1dG8gaW1hZ2UgPSBtYWtlQ0dJbWFnZUNvcHkoKTsKKyAg
ICBDR0Zsb2F0IGltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkgLyBz
Y2FsZUZhY3RvcjsKKyAgICBDR0Zsb2F0IGltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1h
Z2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisKKyAgICBDR0Zsb2F0IGRlc3RYID0gZGVzdGluYXRp
b24ueCgpIC0gc291cmNlLngoKTsKKyAgICBDR0Zsb2F0IGRlc3RZID0gLWltYWdlSGVpZ2h0IC0g
ZGVzdGluYXRpb24ueSgpICsgc291cmNlLnkoKTsKKworICAgIENHQ29udGV4dERyYXdJbWFnZShj
Z0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdFgsIGRlc3RZLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdo
dCksIGltYWdlLmdldCgpKTsKKworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0
KTsKIH0KIAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6bWFrZUNHSW1h
Z2VDb3B5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRhZjVmYjczMTNiZGQ5ODA2OGRlZGQzOWNiYWM0ZGZi
ZTkzNzdjYTguLjhlM2IyYWZmY2EwMDM0YjMyNmRhOWIyMTk4Yzg1Nzk3NGUwNDkxNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dApAQCAtMjQsOCArMjQsOCBAQAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAogR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAotR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2Vy
LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCkBAIC01NTIs
OCArNTUyLDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNw
cAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmNwcAotV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlci5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ODQzNGNiYWMwYzJmNjFh
MmQ2ZTI4MDcxNmVjZDcyODgyODg5MjgyLi4yYThjNDJhNWFiZTQxNWJmOWQxMWM3YjBiM2VmNzE4
ODAyYjIwYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTM4ODksNyArMzg4OSw2IEBACiAJCTU1MDY0MEEyMjQwNzFBNjEwMEFBRTA0
NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwNjQwQTQyNDA3MUMyMTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTU1MDY0MEE1MjQwNzFDQzAwMEFBRTA0NSAvKiBJbWFnZUJ1ZmZl
cklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRDA5NDMyNDA4QTBFNjAw
REU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTVBRDA5NDQyNDA4QUJCMzAwREU0RDJGIC8qIEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc4LDEwICs0MTc3LDcgQEAKIAkJNzFBNjc2
QTUyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rpb25HZXN0
dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2MDYyN0EwMDMy
MzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNE
aXNwYXRjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3ODAwQjI0
MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTcyMjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3ODAwRDI0MDk3
QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTcyMjc4MDExMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNzIyNzgwMTIyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzQyNDA3
ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUlPU3VyZmFjZUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdB
N0YzNTI0MDc4NTdGMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdB
N0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE5MSw2ICs0
MTg3LDEwIEBACiAJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJbWFnZUJ1ZmZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlF
IC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcyOUQwNTMyMjUzMTRGRUYwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MzMyNTMxNEZFRjAwNDIyMDk4IC8qIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MzUyNTMxNzND
QzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcy
OUQwNTM2MjUzMTczQ0MwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzVBOEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vi
c2l0ZURhdGFTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLV2Vic2l0ZURhdGFTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVB
OEQyRDQxODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDc2LDE3ICs4MDc2LDE3IEBACiAJ
CQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovLAogCQkJCTcyN0E3RjM5MjQw
Nzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQk1NUFE
MDk0NDI0MDhBQkIzMDBERTREMkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIuaCAqLywK
LQkJCQk1NTA2NDBBNTI0MDcxQ0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4MjQwNzg4
RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLAog
CQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVy
LmggKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVy
LmggKi8sCi0JCQkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXIuY3BwICovLAogCQkJCTcyMjc4MDBEMjQwOTdBMDIwMDdEMzc2QiAvKiBS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmggKi8sCiAJCQkJNTUwNjQwOUQyNDA3MTYw
OTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAogCQkJCTU1MDY0MDlF
MjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggKi8sCiAJCQkJNTUw
NjQwQTAyNDA3MTlFMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4gKi8sCisJCQkJNzI5RDA1MzUyNTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwICovLAorCQkJCTcyOUQwNTM2MjUzMTczQ0MwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJj
ZUNhY2hlLmggKi8sCiAJCQkJNTUwNjQwOUYyNDA3MTk2QTAwQUFFMDQ1IC8qIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwpAQCAtODA5
NiwxMiArODA5NiwxMiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmggKi8sCi0JCQkJNzIyNzgwMTEyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8sCi0JCQkJNzIyNzgwMTIyNDA5OTA2RTAwN0Qz
NzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICovLAogCQkJCTU1
QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8sCiAJ
CQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oICovLAogCQkJCTU1MDY0MEE0MjQwNzFDMjEwMEFBRTA0NSAvKiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJNzI5RDA1MzIyNTMx
NEZFRjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgKi8sCisJCQkJNzI5
RDA1MzMyNTMxNEZFRjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVySWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlcklkZW50aWZpZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEx
YmM5YWU4N2RjOGQ3MjQyOGEwYjgwOWNhZDBkODBhNGNkMWNiOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQotCi0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWVudW0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Ci11c2luZyBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdlQnVmZmVySWRlbnRpZmll
clR5cGU+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBlODQ5MTY2NDUxNDU5NjI4N2VmMmM3OGY5
MDc2ZTFkNDM4MjE5MWYyLi5lODUxZGQwMzhiNzdjYmQ1ZTA1MjdkZjFhMTAyNjg3NjkxMzM5MDc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQmFj
a2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlciB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6RGVsZWdhdGUgewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVy
ID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPjsKICAgICB1
c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAgIHVzaW5nIEJh
c2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OwpAQCAtNTMsMTQgKzUz
LDIwIEBAIHB1YmxpYzoKIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCiAgICAgeworICAgICAg
ICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQtPnJlbGVhc2VJbWFnZUJ1ZmZlcigqdGhpcyk7CiAgICAgfQogCisgICAgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOyB9CisKIHByb3RlY3RlZDoKICAg
ICBSZW1vdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXIoc2l6ZSkKLSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKHNpemUs
IHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZCkKKyAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0
aGlzKQorICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vha1B0cihyZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKSkKICAgICB7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVDcmVhdGVJbWFnZUJ1ZmZl
cihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwogICAg
IH0KIAogICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUpIG92ZXJyaWRlCkBAIC02OSwyMiArNzUsNTAgQEAgcHJvdGVj
dGVkOgogICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxvZ2ljYWxTaXpl
LCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRs
ZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KLQogICAgIEJhY2tlbmRUeXBlKiBlbnN1
cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoIW1f
YmFja2VuZCkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXImPigqdGhp
cykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZCgpOworICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JD
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQo
KTsKICAgICB9CiAKKyAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250
ZXh0KCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNw
bGF5TGlzdCgpOworICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2Vu
dEZsdXNoSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVtb3RlRmx1c2hE
cmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDb21taXRJ
bWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnJlbGVhc2VSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
ICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hEcmF3aW5n
Q29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQo
KSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZUZsdXNoRHJhd2luZ0NvbnRleHQo
ZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisgICAgCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0KSBjb25zdCBvdmVycmlkZQogICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgICAgICBhdXRv
JiBkaXNwbGF5TGlzdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+bV9k
cmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUlt
YWdlQnVmZmVyKj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNo
RHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnN0
X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlcjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CisgICAgICAgIGlm
IChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgeworICAgICAgICAgICAgY29uc3RfY2FzdDxSZW1v
dGVJbWFnZUJ1ZmZlcio+KHRoaXMpLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsK
KyAgICAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CisgICAgICAgIH0KKwogICAgICAgICAv
LyBnZXRJbWFnZURhdGEgaXMgc3luY2hyb25vdXMsIHdoaWNoIG1lYW5zIHdlJ3ZlIGFscmVhZHkg
cmVjZWl2ZWQgdGhlIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0IG1lc3NhZ2UuCi0gICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnJlbW90ZUdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3Jl
OjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFn
ZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZCkgb3ZlcnJpZGUKQEAgLTk1LDI2ICsxMjksMzIgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRhKGlucHV0Rm9y
bWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7CiAgICAgfQog
Ci0gICAgdm9pZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZQorICAgIFJlZlB0cjxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBmbHVzaERyYXdpbmdD
b250ZXh0KCk7Ci0gICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7CisgICAgICAgIGlm
ICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmNyZWF0ZURyYXdJbWFn
ZUJ1ZmZlckl0ZW0oaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBtX3JlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
KCkgb3ZlcnJpZGUKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0+IGNyZWF0
ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgV2ViQ29yZTo6Q2FjaGVk
SW1hZ2UmIGNhY2hlZEltYWdlKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgYXV0byYgZGlzcGxh
eUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNw
bGF5TGlzdC5pdGVtQ291bnQoKSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRXYWl0Q29tbWl0KGRpc3BsYXlMaXN0KTsK
KyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+Y3Jl
YXRlRHJhd05hdGl2ZUltYWdlSXRlbShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucywgY2FjaGVkSW1hZ2UsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICB9Ci0gICAgCisKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qg
RGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7CiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0g
bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlzcGxheUxpc3Qu
aXRlbUNvdW50KCkgPj0gRGlzcGxheUxpc3RCYXRjaFNpemUpCi0gICAgICAgICAgICBSZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0
KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIDwgRGlzcGxheUxpc3RCYXRj
aFNpemUgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAgICAgIGRpc3Bs
YXlMaXN0LmNsZWFyKCk7CiAgICAgfQorCisgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcxNTBjN2IwNzkzYWZlOWFjNWM4
M2E5YWM3NDZiYTMxOGU1MWI4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0KLSNp
bmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQobWFrZVdl
YWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkpCi17Ci0gICAgLy8gQ3JlYXRlIHRoZSBSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpDcmVhdGVJbWFnZUJ1ZmZlcihz
aXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG1faW1hZ2VC
dWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6
flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoKQotewotICAgIC8vIFJlbGVhc2UgdGhl
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCi0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZUltYWdlQnVmZmVy
KG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVmUHRyPEltYWdlRGF0YT4gUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAotewotICAg
IElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKLSAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1faW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6R2V0
SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcyk7Ci0gICAgcmV0dXJuIGlt
YWdlRGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyOjp3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCkKLXsKLSAgICBp
ZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kICYmICFpc0JhY2tlbmRDcmVhdGVkKCkpCi0gICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OndhaXRG
b3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpCi17Ci0gICAgaWYgKG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCAmJiBpc1BlbmRpbmdGbHVzaCgpKQotICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQtPndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOwotfQot
Ci12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRl
eHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAg
ICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoZGlzcGxheUxp
c3QsIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwot
fQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0Nv
bnRleHRBbmRXYWl0Q29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlz
cGxheUxpc3QpCi17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBJbWFnZUJ1ZmZlckZsdXNoSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFnZUJ1ZmZlckRy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3NlbnRGbHVzaElkZW50aWZpZXIs
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwotICAg
IHdhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOwotfQotCi12b2lkIFJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmNvbW1pdEZsdXNoQ29udGV4dChJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi17Ci0gICAgbV9yZWNlaXZlZEZsdXNo
SWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlci5oCmluZGV4IDYyMDQxOGQ3OGMyN2YyOGM1NzQ5MDJjMmUxYmE5
YTIzNzE3NTE3YjkuLjYxZGQ1OGNlNTJmZGNlZDRmMTg0YWYwZWE2Nzk3YjI2NjI3NWEyNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCkBAIC0yOSw1MCAr
MjksMzEgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmxv
YXRTaXplOwogY2xhc3MgSW1hZ2VEYXRhOwogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIDogdWludDhfdDsKK2VudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotCiBjbGFz
cyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCk7Ci0KLSAgICBJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1
ZmZlcklkZW50aWZpZXI7IH0KLQogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLiBTZWUg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbi4KICAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJD
b3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpID0gMDsKIAotICAgIHZv
aWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyKTsKLQotcHJv
dGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7Ci0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKICAgICBib29sIGlz
UGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1f
cmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURh
dGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2b2lk
IHdhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKLSAgICB2b2lkIHdhaXRGb3JDb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0
KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKKyAgICB7CisgICAg
ICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7CisgICAgfQog
Ci0gICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5tZXNzYWdlcy5pbi4KLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0gICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0
QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmKTsKLQotcHJp
dmF0ZToKLSAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZDsKLSAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1ZmZlcklkZW50
aWZpZXIgeyBJbWFnZUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK3Byb3RlY3RlZDoK
KyAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCkgPSBkZWZhdWx0
OwogCiAgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVy
OwogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZp
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA5OTUzNDE3ODdlZGEyMGE1
NTRlNGQ2N2JhNTNkYzY5OGE1MzcwY2MwLi4wNjU3ODE0MmM2YWUyMTUxOGYzMDJmYmRjMDRlNWVm
MTk5OGE0NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTg4LDM4ICs4
OCw3NSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OndhaXRGb3JDb21taXRJbWFnZUJ1
ZmZlckZsdXNoQ29udGV4dCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBTaG91bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGlmIChzaG91bGRBY2NlbGVyYXRlID09
IFNob3VsZEFjY2VsZXJhdGU6OlllcykgewotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2Rl
OjpSZW1vdGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykp
IHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VC
dWZmZXItPmltYWdlQnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJu
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzaG91bGRBY2Nl
bGVyYXRlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworfQogCi0gICAgaWYgKGF1dG8g
aW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
LCBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJN
YXAuYWRkKGltYWdlQnVmZmVyLT5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIu
Z2V0KCkpOwotICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgfQordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlKQor
eworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlSW1hZ2VCdWZmZXIoaW1hZ2UpOwor
fQogCi0gICAgcmV0dXJuIG51bGxwdHI7CitSZWZQdHI8RGlzcGxheUxpc3Q6Okl0ZW0+IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oSW1hZ2VCdWZmZXIm
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlLmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oaW1hZ2UsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworUmVmUHRyPERp
c3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVEcmF3TmF0aXZl
SW1hZ2VJdGVtKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlJiBj
YWNoZWRJbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZp
ZXIpCit7CisgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVEcmF3TmF0aXZl
SW1hZ2VJdGVtKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBj
YWNoZWRJbWFnZSwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudChSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
cmVsZWFzZVJlbW90ZUNsaWVudChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKworUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAg
ICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVy
aW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZW1vdGVHZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSVBDOjpJbWFnZURhdGFSZWZlcmVu
Y2UgaW1hZ2VEYXRhUmVmZXJlbmNlOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgMV9zKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRhUmVmZXJlbmNl
LmJ1ZmZlcigpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUZsdXNo
RHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlz
dCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkZsdXNoSW1h
Z2VCdWZmZXJEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKK0ltYWdlQnVmZmVyRmx1
c2hJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUZsdXNoRHJhd2luZ0Nv
bnRleHRBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlz
dCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBzZW50Rmx1c2hJZGVudGlmaWVyID0gSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRl
eHRBbmRDb21taXQoZGlzcGxheUxpc3QsIHNlbnRGbHVzaElkZW50aWZpZXIsIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVy
biBzZW50Rmx1c2hJZGVudGlmaWVyOworfQorCitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlQ2FjaGVOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCit7CisgICAgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllciA9IFJlbW90ZVJlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkNhY2hlTmF0
aXZlSW1hZ2UoaW1hZ2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CiB9
CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdl
QnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIC8vIENyZWF0ZUltYWdl
QnVmZmVyIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhpcyBvbmUu
Ci0gICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5yZW1vdmUo
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpSZWxlYXNl
UmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IElu
dFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAo
YXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5nZXQoaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNyZWF0ZUJhY2tlbmQo
bG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdU
Rk1vdmUoaGFuZGxlKSk7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQog
Ci12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250
ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElk
ZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAg
ICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllcik7Cisg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZs
dXNoSWRlbnRpZmllciwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGY0OTYxNThlN2Q0
MGVlYjA1YWMzOTQzNGFmMjQ2MzNiYWJjN2YwZWYuLmU5MzMzMGU3NWFjODNjODRjNGNjOWZhYWEy
NzdlMzI4Y2ZjNTY1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0yOSwxOCAr
MjksMjQgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNp
emUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OworY2xhc3MgSXRlbTsKK30KK2Ns
YXNzIEZsb2F0U2l6ZTsKK2VudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitlbnVtIGNs
YXNzIFJlbmRlcmluZ01vZGUgOiB1aW50OF90OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZApAQCAtNTIsOCArNTgsNiBAQCBwdWJsaWM6CiAK
ICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9Ci0KICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIu
CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qg
b3ZlcnJpZGU7CkBAIC02MSwyMSArNjUsMzIgQEAgcHVibGljOgogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwg
V2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpDb2xvclNwYWNlKTsKLSAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpOwotCiAgICAgYm9vbCB3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCk7
CiAgICAgYm9vbCB3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoKTsKKyAgICAg
ICAgCisgICAgLy8gUmVzb3VjZSBjYWNoZS4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSk7CisgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1h
Z2VCdWZmZXImKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0+IGNyZWF0
ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0+
IGNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYsIFdlYkNvcmU6OkNhY2hlZEltYWdlJiwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1v
dGVDbGllbnQoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIC8vIE1l
c3NhZ2VzIHRvIGJlIHNlbnQuCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gcmVtb3RlR2V0SW1hZ2VEYXRh
KFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIHZvaWQgcmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIHJlbW90ZUZsdXNoRHJhd2luZ0NvbnRl
eHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlQ2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRp
dmVJbWFnZVB0ciYpOworICAgIHZvaWQgcmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCgpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAg
dm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBs
b2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJG
bHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIEltYWdlQnVmZmVySWRlbnRp
Zmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICB1c2luZyBJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxJbWFnZUJ1ZmZlcklkZW50aWZp
ZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIqPjsKLSAgICBJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcDsKKyAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZSB7ICp0aGlzIH07CiAgICAgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7IFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMTJhN2JmOGRhNGM4MjU3
MGJjYTM2YTEzNWZkNzFhZjI1ODhiNjRkNS4uMmMwZjdlOGExMjAzZjI2ODY1MmEwMGZjMWY3YjE3
ZGE1OTlkMmFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbgpAQCAtMjMsOCArMjMsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2Fn
ZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIENy
ZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNhbFNpemUsIFdl
YkNvcmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBoYW5kbGUsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRp
ZmllcikKLSAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KFdlYktpdDo6SW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJLaXQ6OkltYWdlQnVm
ZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgdm9pZCBDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpJ
bnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxl
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQorICAgIHZvaWQgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoV2ViS2l0OjpJbWFn
ZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42M2Y5NzJjMTBkZDFjYWQyYjcwZDZjMzQxNTVmNzE1ZTg1ODIxYjNjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcApAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZVJl
c291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBpZiAoc2hvdWxkQWNjZWxl
cmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2VC
dWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVy
aW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1
ZmZlckhhc2hNYXAuYWRkKGltYWdlQnVmZmVyLmdldCgpLCBpbWFnZUJ1ZmZlci0+cmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVySGFzaE1hcC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmll
cigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlJlbW90
ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKSkgeworICAgICAgICBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5hZGQo
aW1hZ2VCdWZmZXIuZ2V0KCksIGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KSk7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuYWRk
KGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0
KCkpOworICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CisgICAgfQorCisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tl
bmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1f
cmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5kKGxvZ2ljYWxT
aXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhh
bmRsZSkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdEltYWdlQnVmZmVy
Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAg
ICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVm
ZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKK30KKworUmVmUHRyPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVEcmF3
SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgPSBmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoaW1hZ2UsIHJl
bW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGbHVzaCB0aGUgRHJhd2luZ0NvbnRl
eHQgb2YgdGhlIHNvdXJjZSBJbWFnZUJ1ZmZlciBzbyB0aGlzIEltYWdlQnVmZmVyIGdldHMgYW4g
dXBkYXRlZCBpbWFnZS4KKyAgICBpbWFnZS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmNyZWF0ZShyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKworUmVm
UHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVh
dGVEcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENh
Y2hlZEltYWdlJiBjYWNoZWRJbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNs
aWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBm
aW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoY2FjaGVkSW1hZ2UsIGltYWdlLCByZW1vdGVDbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6OmNyZWF0ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFn
ZSkKK3sKKyAgICAvLyBSZW1vdmUgdGhlIHJlc291cmNlIGZyb20gdGhlIGNhY2hlLgorICAgIGF1
dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAu
dGFrZSgmaW1hZ2UpOworICAgIEFTU0VSVChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisg
ICAgLy8gY3JlYXRlSW1hZ2VCdWZmZXIgc2hvdWxkIGhhdmUgYmVlbiByZXR1cm5lZCB0aGlzIElt
YWdlQnVmZmVyIGJlZm9yZS4KKyAgICBib29sIGZvdW5kID0gbV9yZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVySGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CisKKyAgICAvLyBUZWxsIHRoZSBHUFUgcHJv
Y2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZSB1bmxlc3MgaXQncyBwZW5kaW5nIHJlcGxheWlu
ZyBiYWNrLgorICAgIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcjsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6
OnJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
Cit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZS4KKyAgICBhdXRv
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwLnRh
a2UoaW1hZ2UpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMg
cmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAgICBpZiAocmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5k
aW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHJldHVybiBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoSW1hZ2VCdWZmZXIm
IGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikK
K3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZm
ZXJIYXNoTWFwLmdldCgmaW1hZ2UpOworICAgIGFkZFJlbW90ZUNsaWVudChyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2UmIGNhY2hlZEltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAuZW5zdXJlKGlt
YWdlLCBbJl0geworICAgICAgICBjYWNoZWRJbWFnZS5hZGRDbGllbnQoKnRoaXMpOworICAgICAg
ICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZUNhY2hlTmF0aXZlSW1hZ2Uo
aW1hZ2UpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGFkZFJlbW90ZUNsaWVudChy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJl
dHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZTo6YWRkUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVu
dGlmaWVyKQoreworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBBZGQgdGhlICJyZXNvdXJjZSAtPiBjbGllbnQiIGRlcGVuZGVuY3kg
aW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGF1dG8mIGNsaWVudHMgPSBt
X3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuZW5zdXJlKHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUNsaWVudHNIYXNoU2V0KCk7CisgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgY2xpZW50cy5hZGQocmVtb3RlQ2xpZW50SWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcmVtb3RlUmVzb3VyY2VDbGllbnRz
UGVuZGluZ1JlbGVhc2VIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikp
OworCisgICAgLy8gSWYgd2UgaGF2ZSByZWNvcmRlZCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRl
cGVuZGVuY3kgYmVmb3JlIGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCwgbW92ZSB0
aGlzCisgICAgLy8gZGVwZW5kZW5jeSB0byBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdS
ZWxlYXNlSGFzaE1hcC4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgY2Fj
aGUuCisgICAgaWYgKG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5jb250YWlucyhyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1Bl
bmRpbmdSZWxlYXNlSGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBtX3JlbW90
ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAudGFrZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKTsK
KyAgICBlbHNlCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZWxlYXNl
UmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworVmVjdG9yPFJl
bW90ZVJlc291cmNlSWRlbnRpZmllcj4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVtb3ZlUmVtb3Rl
Q2xpZW50KFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291cmNlQ2xpZW50
c0hhc2hNYXAsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVy
KQoreworICAgIFZlY3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90ZVJlc291cmNl
Q2xpZW50c1RvQmVSZW1vdmVkOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4g
Y2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisg
ICAgZm9yIChhdXRvJiBwYWlyIDogcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCkgeworICAg
ICAgICBwYWlyLnZhbHVlLnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAg
aWYgKHBhaXIudmFsdWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDbGll
bnRzVG9CZVJlbW92ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4g
YSBsaXN0IG9mIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzLgorICAgIHJldHVybiByZW1vdGVS
ZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZDsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hl
OjpyZWxlYXNlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGll
bnRJZGVudGlmaWVyKQoreworICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNlIC0+IGNsaWVu
dCBkZXBlbmRlbmNpZXMgZnJvbSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuCisgICAg
Zm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90ZUNsaWVudCht
X3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpKQor
ICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAucmVtb3ZlKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJjZSAtPiBjbGll
bnQgZGVwZW5kZW5jaWVzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFz
ZUhhc2hNYXAuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92
ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1h
cCwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSB1bnJl
ZmVyZW5jZWQgcmVzb3VyY2VzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVs
ZWFzZUhhc2hNYXAuCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVuZGluZ1JlbGVh
c2VIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgICAgIC8v
IFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTE3ODAxMTUxYzZhMWQyNDQzZTM2N2Q2NmE0ODE2NmMzYmYwZTgwZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRl
ICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVk
SW1hZ2VDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBJdGVtOworfQorZW51bSBjbGFzcyBDb2xv
clNwYWNlIDogdWludDhfdDsKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0OworY2xhc3Mg
RmxvYXRTaXplOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlcjsKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisKK2Ns
YXNzIFJlbW90ZVJlc291cmNlQ2FjaGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGll
bnQgeworcHVibGljOgorICAgIFJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpTaG91bGRB
Y2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UpOwor
ICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNv
bW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgUmVmUHRyPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtPiBjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0
aW9ucyYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBjcmVhdGVEcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
LCBXZWJDb3JlOjpDYWNoZWRJbWFnZSYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVsZWFzZUltYWdl
QnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciYpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAg
dXNpbmcgUmVtb3RlQ2xpZW50c0hhc2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFz
aE1hcDxXZWJDb3JlOjpJbWFnZUJ1ZmZlciosIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcj47CisgICAgdXNpbmcgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsK
KyAgICB1c2luZyBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUNsaWVudHNIYXNoU2V0PjsKKyAgICB1
c2luZyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcCA9IEhhc2hNYXA8V2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyKj47CisKKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IFdl
YkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSkgb3ZlcnJpZGUgeyByZWxlYXNlTmF0aXZlSW1h
Z2UoaW1hZ2UpOyB9CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgZmlu
ZEltYWdlQnVmZmVyRm9yQ2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgY29u
c3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZFJlbW90ZUNsaWVu
dChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBWZWN0b3I8V2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPiByZW1vdmVSZW1vdGVDbGllbnQoUmVtb3RlUmVz
b3VyY2VDbGllbnRzSGFzaE1hcCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBl
bmRpbmdSZW1vdmVDbGllbnRzKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisK
KyAgICBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXA7
CisgICAgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFw
OworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNvdXJjZUNsaWVu
dHNIYXNoTWFwOworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNv
dXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXA7CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFz
aE1hcDsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dl
YkdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9X
ZWJHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDFhZTUxNTcyNTM2MWQyMjgyMTkxNGFlZDBmMjhi
YjE2ZTc2MzU4ZmYuLjMwMDUwYWMwN2RjOWFkNWM4M2YzZGUyODMyOTA2YTk4NzQxMGQzZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBh
ZFByb3ZpZGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHQU1FUEFEKQogCiAj
aW5jbHVkZSAiR2FtZXBhZERhdGEuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
V2ViR2FtZXBhZC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbE1lc3NhZ2VzLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411098</attachid>
            <date>2020-10-12 00:08:16 -0700</date>
            <delta_ts>2020-10-21 20:48:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201012000815.patch</filename>
            <type>text/plain</type>
            <size>201010</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMxYWE4Njk0MDM0ZjFl
ZDg1MGRmZjdlYzFlNmViYThkZTNiNGJiZS4uMDEwNTQ1YjI3YTdiNDIzODU3YTNlMTE0Y2MzZDVj
OGZkZDU3ZmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzMSBAQAorMjAyMC0xMC0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUg
UHJvY2Vzc10gQ2FjaGUgdGhlIEJpdG1hcEltYWdlIGZyYW1lIGluIEdQVSBQcm9jZXNzIGFuZCBh
bGxvdyByZWZlcmVuY2luZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRtbC9JbWFn
ZUJpdG1hcC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2Jz
ZXJ2ZXI6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZUNsaWVudDo6bmF0aXZlSW1h
Z2VXaWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFn
ZTo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6Om5hdGl2ZUltYWdlUHRyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjppbWFnZVNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6b3B0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUlt
YWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbSk6
CisKKzIwMjAtMTAtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENsZWFuIHRoZSBEaXNwbGF5TGlzdCByZWNvcmRp
bmcgb2YgdGhlIE5hdGl2ZUltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAxKSBNb3ZlIHRoZSBkZWZpbml0aW9uIG9mIE5hdGl2ZUltYWdlUHRyIHRv
IGEgc2VwYXJhdGUgaGVhZGVyIGZpbGUgbmFtZWQKKyAgICAgICAgICAgTmF0aXZlSW1hZ2VQdHIu
CisgICAgICAgIDIpIFJlbW92ZSB0aGUgY2xhc3MgSW1hZ2VIYW5kbGUgYW5kIGFsbG93IGVuY29k
aW5nIGFuZCBkZWNvZGluZyBOYXRpdmVJbWFnZVB0cgorICAgICAgICAgICBkaXJlY3RseS4KKyAg
ICAgICAgMykgUmVtb3ZlIHRoZSBjb21waWxhdGlvbiBkaXJlY3RpdmVzIGFyb3VuZCB0aGUgRGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZQorICAgICAgICAgICBpdGVtIGFuZCB0aGUgbWV0aG9k
IGRyYXdOYXRpdmVJbWFnZSgpLgorICAgICAgICA0KSBNb3ZlIHRoZSBkcmF3TmF0aXZlSW1hZ2Uo
KSBtZXRob2RzIHRvIHRoZSBzb3VyY2VzIG9mIHRoZWlyIGNhbGxlcnMuCisgICAgICAgIDUpIElu
IHRoZSBjYXNlIG9mIHJlY29yZGluZyB0aGUgZHJhd2luZyBjb21tYW5kcywgbWFrZSBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZSgpCisgICAgICAgICAgIHByb2Nlc3MgZHJhd2luZyB0aGUgaW1h
Z2VzIHN1Y2ggdGhhdCBwcmltaXRpdmVzIGRyYXdpbmcgY29tbWFuZHMgYXJlCisgICAgICAgICAg
IHJlY29yZGVkLiBGb3IgZXhhbXBsZSBhIEJpdG1hcEltYWdlIHdpbGwgcmVuZGVyIGEgTmF0aXZl
SW1hZ2UgZXZlbnR1YWxseS4KKyAgICAgICAgICAgQW5kIFNWR0ltYWdlIHdpbGwgcmVjb3JkIGl0
cyByZW5kZXIgdHJlZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2VQdHIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3
TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6RHJhd0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6cmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3SW1hZ2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlvblJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6b3B0aW9ucyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisKKzIwMjAtMTAtMTAgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFBy
b2Nlc3NdIEltcGxlbWVudCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyIGl0ZW0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU2NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzZXF1ZW5jZSBp
biB0aGUgV2ViIFByb2Nlc3MgaXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAtLSBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcigpIHVzZXMgRGlzcGxheUxpc3Q6OlJlY29yZGVyIHRv
IGNoZWNrCisgICAgICAgICAgIHdoZXRoZXIgaXQgaXMgYXBwcm9wcmlhdGUgdG8gY3JlYXRlIERy
YXdJbWFnZUJ1ZmZlciBpdGVtIG9yIG5vdC4KKworICAgICAgICAtLSBEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcigpIHVzZXMgdGhlIGRlbGVnYXRlIHRvIHRvIGNyZWF0ZQor
ICAgICAgICAgICB0aGUgRHJhd0ltYWdlQnVmZmVyIGl0ZW0uCisKKyAgICAgICAgLS0gU2luY2Ug
UmVtb3RlSW1hZ2VCdWZmZXIgaW5oZXJpdHMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0
ZSwgCisgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJ
dGVtKCkgd2lsbCBiZSBjYWxsZWQuCisKKyAgICAgICAgLS0gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbSgpIHdpbGwgYmUgY2FsbGVkIG5leHQKKyAgICAg
ICAgICAgd2hpY2ggd2lsbCBjYWxsIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdJbWFn
ZUJ1ZmZlckl0ZW0oKS4KKworICAgICAgICAtLSBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVhdGVE
cmF3SW1hZ2VCdWZmZXJJdGVtKCkgY2hlY2tzIGl0cyBIYXNoTWFwCisgICAgICAgICAgIHVzaW5n
IHRoZSBJbWFnZUJ1ZmZlciogdG8gZmluZCB0aGUgY29ycmVzcG9uZGluZyBSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIuCisgICAgICAgICAgIElmIGl0IGZpbmRzIGl0LCBpdCB3aWxsIGNyZWF0ZSB0
aGUgRHJhd0ltYWdlQnVmZmVyIGl0ZW0uCisKKyAgICAgICAgVGhlIHNlcXVlbmNlIGluIHRoZSBH
UFUgUHJvY2VzcyBpcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIFdoZW4gcmVwbGF5aW5n
IGJhY2sgdGhlIERpc3BsYXlMaXN0LCBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgd2lsbCBjYWxsCisg
ICAgICAgICAgIGl0cyBkZWxlZ2F0ZSB0byBjaGVjayBpZiBpdCB3YW50cyB0byBhcHBseSB0aGUg
RHJhd0ltYWdlQnVmZmVyLgorCisgICAgICAgIC0tIEJlY2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eSBpbmhlcml0cyBEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlLAorICAgICAgICAg
ICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjphcHBseSgpIHdpbGwgYmUgY2FsbGVkLgorCisgICAg
ICAgIC0tIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgd2lsbCBjYWxsIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6YXBwbHlSZXNvdXJjZUl0ZW0oKQorICAgICAgICAgICB3aGljaCB3aWxsIHBh
c3MgaXQgdG8gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS4KKworICAgICAgICAtLSBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKCkgd2lsbCBzZWFyY2ggZm9y
IGEKKyAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXIgd2hvc2UgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIG1hdGNoZXMgdGhlIG9uZSBpbgorICAgICAgICAgICBEcmF3SW1hZ2VCdWZmZXIuIEFu
ZCB0aGVyZSBpcyBvbmUsIGl0IHdpbGwgZHJhd3MgdG8gR3JhcGhpY3NDb250ZXh0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0Nv
bnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpEcmF3
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlvblJlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6b3B0
aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZUJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXhM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OnB1
dEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Ondp
bGxBcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlY29yZGVyOjpEZWxlZ2F0ZTo6fkRlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNlcnZlcjo6fk9ic2Vy
dmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
T2JzZXJ2ZXI6OndpbGxBcHBlbmRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoK
KyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oOgorCisyMDIwLTEwLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1
Y2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRo
ZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE3NTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGEgbmV3IHZpcnR1YWwgbWV0aG9kcyB0byBJbWFnZUJ1ZmZlciB3aGljaCB1c2Vk
IHRvIGJlIGEgdmlydHVhbCBtZXRob2QKKyAgICAgICAgb2YgUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LiBUaGlzIG1ldGhvZCBpcyBhbHJlYWR5IG92ZXJyaWRkZW4KKyAgICAg
ICAgYnkgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBhbmQgaXMgY2FsbGVkIGJ5IFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS4gQnV0CisgICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBrZWVw
cyBhIEhhc2hNYXAgb2YgSW1hZ2VCdWZmZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaERy
YXdpbmdDb250ZXh0KToKKworMjAyMC0xMC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IFJlcGxhY2UgIkltYWdl
QnVmZmVySWRlbnRpZmllciIgYnkgYSBnZW5lcmljIGlkZW50aWZpZXIgbmFtZWQgIlJlbW90ZVJl
c291cmNlSWRlbnRpZmllciIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciB3aWxsIGJlIHVzZWQgaW4gV2ViQ29y
ZSB3aGVuIHJlY29yZGluZyBkcmF3aW5nCisgICAgICAgIGEgcmVtb3RlIEltYWdlQnVmZmVyIHRv
IGFub3RoZXIgcmVtb3RlIEltYWdlQnVmZmVyLiBFdmVudHVhbGx5IGl0IHdpbGwKKyAgICAgICAg
YmUgdXNlZCBkcmF3aW5nIGEgcmVtb3RlIE5hdGl2ZUltYWdlIHRvIGEgcmVtb3RlIEltYWdlQnVm
ZmVyIG9yIERPTSBsYXllci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oOiBBZGRlZC4KKwogMjAyMC0xMC0wOSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc10gTWVjaGFuaWNhbCBjbGVhbnVwIGluIERpc3BsYXlMaXN0UmVjb3JkZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYTViYTM0N2IxYTFmZmYyOTFkZWE4NDEyM2MwNDY2ZTlhMGU2NDc4ZS4uMjhjMTIzMTkw
MzFkZTI5ZGEwMTVmODExMjYwZmJhZmQxMzk5YWU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNTQg
QEAKKzIwMjAtMTAtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENhY2hlIHRoZSBCaXRtYXBJbWFnZSBmcmFtZSBp
biBHUFUgUHJvY2VzcyBhbmQgYWxsb3cgcmVmZXJlbmNpbmcgaXQgd2l0aCBpdHMgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTc1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNo
ZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3TmF0aXZlSW1hZ2VJdGVtIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291
cmNlSXRlbSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVDYWNoZU5hdGl2ZUltYWdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdO
YXRpdmVJbWFnZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpy
ZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKworMjAyMC0xMC0xMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2xlYW4gdGhlIERpc3BsYXlMaXN0IHJlY29yZGluZyBvZiB0aGUgTmF0aXZlSW1hZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHA6CisgICAgICAgIChJUEM6OmVuY29kZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKElQQzo6ZW5j
b2RlT3B0aW9uYWxOYXRpdmVJbWFnZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TmF0
aXZlSW1hZ2VQdHI+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE5hdGl2
ZUltYWdlUHRyPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRpdmVJ
bWFnZUhhbmRsZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8TmF0aXZlSW1hZ2VIYW5kbGU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxl
Qml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToK
KworMjAyMC0xMC0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IERpc3BsYXlMaXN0OjpEcmF3SW1h
Z2VCdWZmZXIgaXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE3NTY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6YXBwbHkpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjphcHBseVJlc291cmNl
SXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpkcmF3SW1hZ2VCdWZmZXJJdGVtIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjphcHBseVJlc291cmNlSXRlbSBjb25zdCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6flJlbW90ZUltYWdlQnVmZmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
RHJhd0ltYWdlQnVmZmVySXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGU6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKworMjAyMC0xMC0xMCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gSW50cm9kdWNlIFJlbW90ZVJlc291cmNlQ2FjaGUgdG8gbWFuYWdlIHRoZSByZW1vdGUg
cmVzb3VyY2VzIGluIFdlYiBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTc1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwgYmUgcmVzcG9uc2libGUg
Zm9yIG1hbmFnaW5nIHRoZSByZW1vdGUgcmVzb3VyY2VzCisgICAgICAgIGluY2x1ZGluZyB0aGVp
ciBhY3R1YWwgbGlmZSBjeWNsZSBpbiB0aGUgV2ViIFByb2Nlc3Mgc2lkZS4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZAorICAgICAgICB3aWxsIGJlIHJlc3BvbnNpYmxlIG9ubHkgZm9yIHRoZSBJUEMg
Y29tbXVuaWNhdGlvbnMgd2l0aCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisgICAgICAg
IEl0IHdpbGwgZGVsZWdhdGUgYWxsIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50IHRvIGl0cyBSZW1v
dGVSZXNvdXJjZUNhY2hlLgorCisgICAgICAgIEJlY2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXIgZG9l
cyB0aGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFdlYkNvcmUgYW5kIEdQVQorICAgICAgICBQcm9j
ZXNzLCBSZW1vdGVSZXNvdXJjZUNhY2hlIHdpbGwga2VlcCB0d28gSGFzaE1hcHMgdG8gZWFzZSB0
aGUgbWFwcGluZworICAgICAgICBpbiBib3RoIGRpcmVjdGlvbnM6CisKKyAgICAgICAgLS0gbV9y
ZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbWFwcyBJbWFnZUJ1ZmZlciogLT4gUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyCisgICAgICAgIC0tIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
ckhhc2hNYXAgbWFwcyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgICAgLT4gUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcioKKworICAgICAgICBUbyBrZWVwIHRyYWNrIG9m
IHRoZSByZXNvdXJjZSByZWZlcmVuY2luZywgUmVtb3RlUmVzb3VyY2VDYWNoZSB1c2VzIGFub3Ro
ZXIgCisgICAgICAgIG1hcCB3aGljaCByZWxhdGVzIGEgcmVtb3RlIHJlc291cmNlIHdpdGggdGhl
IHNldCBvZiByZW1vdGUgZHJhd2luZyBjbGllbnRzLgorICAgICAgICAKKyAgICAgICAgLS0gbV9y
ZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1hcHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IC0+CisgICAgICAgICAgIEhhc2hTZXQ8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPgorCisgICAg
ICAgIFRoZSByZW1vdGUgcmVzb3VyY2UgaGFzIHN0YXkgYWxpdmUgdGlsbCB0aGVpciBjbGllbnRz
IHJlcGxheWVkIGJhY2sgdGhlaXIKKyAgICAgICAgRGlzcGxheUxpc3Q6Okl0ZW1zIHdoaWNoIHJl
ZmVyZW5jZSB0aGVzZSByZXNvdXJjZXMuIE9uY2UgUmVtb3RlUmVzb3VyY2VDYWNoZQorICAgICAg
ICBpcyByZXF1ZXN0ZWQgdG8gcmVsZWFzZSBhIHJlbW90ZSByZXNvdXJjZSBidXQgaXQgZmluZHMg
dGhpcyByZXNvdXJjZSBpcworICAgICAgICByZWZlcmVuY2VkIGJ5IGEgc2V0IG9mIHJlbW90ZSBk
cmF3aW5nIGNsaWVudHMsIGl0IG1vdmVzIHRoZSBlbnRyeSBvZiB0aGlzCisgICAgICAgIHJlc291
cmNlIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIHRvIGFub3RoZXIgSGFzaE1h
cCBuYW1lZDoKKworICAgICAgICAtLSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxl
YXNlSGFzaE1hcCBtYXBzIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICAgICAtPiBI
YXNoU2V0PFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4KKworICAgICAgICBXaGVuIGFuIGVudHJ5
IGZvciBhIHJlbW90ZSByZXNvdXJjZSBleGlzdHMgaW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQ
ZW5kaW5nUmVsZWFzZUhhc2hNYXAgCisgICAgICAgIGFuZCBubyByZW1vdGUgY2xpZW50IHJlZmVy
ZW5jZXMgaXQgYW55bW9yZSwgUmVtb3RlUmVzb3VyY2VDYWNoZSB3aWxsIHRlbGwgCisgICAgICAg
IEdQVSBQcm9jZXNzIHRvIHJlbGVhc2UgaXRzIHJlbW90ZSByZXNvdXJjZSBhcyB3ZWxsLgorCisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
cjo6UmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
aDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Y29t
bWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVudGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlR2V0SW1hZ2VEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlRmx1c2hEcmF3
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJl
bW90ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
bmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFn
ZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpSZW1vdGVSZXNv
dXJjZUNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGU6OmZpbmRJbWFnZUJ1ZmZlckZvckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmFkZFJlbW90ZUNsaWVudCk6CisgICAgICAg
IExpbmtzIGEgcmVtb3RlIHJlc291cmNlIHdpdGggYSBkcmF3aW5nIHJlbW90ZSBjbGllbnQuCisK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpyZW1vdmVSZW1vdGVDbGllbnQpOgorICAgICAgICBSZW1vdmUgYWxsIHRoZSBlbnRy
aWVzIHdoaWNoIGluY2x1ZGVzIGEgY2VydGFpbiByZW1vdGUgY2xpZW50LgorCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVDbGllbnQpOgorICAgICAg
ICBBIHJlbW90ZSBjbGllbnQgaGFzIGRvbmUgZmx1c2hpbmcgaXRzIERyYXdpbmdDb250ZXh0LiBJ
dCdzIHRpbWUgdG8gYm9vay0KKyAgICAgICAga2VlcCB0aGUgcmVzb3VyY2UgcmVmZXJlbmNpbmcg
YW5kIHN5bmMgdXAgd2l0aCB0aGUgR1BVIHNpZGUgaWYgaXQgaGFzIHRvCisgICAgICAgIHJlbGVh
c2Ugc29tZSBvZiB0aGUgcmVtb3RlIHJlc291cmNlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDogQWRkZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6CisKKzIwMjAtMTAtMDkgIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRo
ZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgd2lsbCBiZSBy
ZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHJlbW90ZSByZXNvdXJjZXMKKyAgICAgICAgaW5j
bHVkaW5nIHRoZWlyIGFjdHVhbCBsaWZlIGN5Y2xlLiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkgd2lsbCBiZSAKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHRoZSBJUEMgY29tbXVuaWNhdGlv
bnMgd2l0aCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLiBJdCB3aWxsCisgICAgICAgIGRlbGVnYXRl
IGFsbCB0aGUgcmVzb3VyY2UgbWFuYWdlbWVudCB0byBpdHMgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LgorCisgICAgICAgIFdlIGNhbiBnZXQgcmlkIG9mIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eSBiZWNhdXNlIGFsbCBpdCBkb2VzCisgICAgICAgIGlzIHNlbmRpbmcgbWVz
c2FnZXMgdG8gV2ViUHJvY2Vzcy4gUmVtb3ZpbmcgaXQgd2lsbCBzaW1wbGlmeSB0aGUgaW50ZXJm
YWNlCisgICAgICAgIG9mIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFNlbmRpbmcgdGhlIG1lc3Nh
Z2VzIHdpbGwgYmUgbW92ZWQgdG8KKyAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjphcHBseSk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OnJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoSW1hZ2VC
dWZmZXJEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRJbWFnZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VS
ZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6Zmx1c2hEcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Z2V0SW1hZ2VEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXIuY3BwOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisyMDIwLTEwLTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXTogUmVwbGFjZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyIiBieSBhIGdlbmVyaWMgaWRl
bnRpZmllciBuYW1lZCAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTUwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR1BVIFByb2Nlc3MgbmVlZHMgYSB1bml2
ZXJzYWwgaWRlbnRpZmllciBmb3IgZHJhd2luZyBjYWNoZWQgcmVzb3VyY2VzIGFuZCAKKyAgICAg
ICAgZHJhd2luZyBidWZmZXJzIGFuZCBsYXllcnMuIFRoZSBtZWFuaW5nIG9mIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllciB3aWxsCisgICAgICAgIGRlcGVuZCBvbiB0aGUgY29udGV4dCBpdCBpcyB1
c2VkIGluLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQ
cm94eTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eTo6Y29tbWl0Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
SW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpn
ZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Zmx1c2hEcmF3aW5nQ29udGV4dEFuZFdhaXRD
b21taXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlcjo6cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6aW1hZ2VCdWZmZXJJZGVu
dGlmaWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjb21taXRJbWFnZUJ1ZmZl
ckZsdXNoQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnJlbGVhc2VJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisKIDIwMjAt
MTAtMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVSBQcm9jZXNzXSBBZGQgYWRkaXRpb25hbCBzdXBwb3J0IGZvciBwYWludGluZyB2aWRlbyBl
bGVtZW50cyB0byAyRCBjb250ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYTg0N2IwNWFiNDRl
NWNkNGE3MDZiZTMwOGM4YjY0NWI1MjU0MDBmZS4uYmYwN2EyNWI2YTkwNDZlOTEwODBmN2Q0MWU4
NWQ5MjI5NGM1Zjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xMTk0LDYgKzExOTQsNyBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdl
SW5mby5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xF
U1NoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC0xMjA3LDYgKzEyMDgsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0
VHJhY2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2Ft
cGxlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2Q2MWUwNWIzNTc3MzA0YzE4M2M1MDNmODMx
ZWM4OTQxMDEwMDAyMS4uM2ZlMjlmOGJjZTg0YTI0YjY5NzZlZTBkNzMyZWJmZjQ1YmFhZWQzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjAwNyw3ICsyMDA3LDYgQEAKIAkJNkE3Mjc5OEIxRjE2QzI5QzAwM0YzOUI4IC8qIElu
c3BlY3RvclNoYWRlclByb2dyYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZBNzI3OTg4MUYxNkMyOUIwMDNGMzlCOCAvKiBJbnNwZWN0b3JTaGFkZXJQ
cm9ncmFtLmggKi87IH07CiAJCTZCMEEwN0YyMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0
cmlidXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZCMEEwN0YwMjFGQTRCNUMwMEQ1NzM5MSAvKiBBZENsaWNrQXR0cmlidXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjFGNDgxMTIyOThB
MzdFMDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkIxRjQ4MEYyMjk4OUVDNDAw
REU4QjgyIC8qIENyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2QjM0ODA5NDBFRUY1MEQ0MDBB
QzFCNDEgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZCNEQ0MTJE
MjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExv
Z2dlZEluU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNkI0RTg2MTMyMjFCNzEzRjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QjRFODYxMjIy
MUI3MTNGMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2QjUwN0EyNDIzNEJGMzQxMDBCRTdDNjIg
LyogTmF2aWdhdG9ySXNMb2dnZWRJbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkI1MDdBMjEyMzRCRjM0MTAwQkU3QzYyIC8qIE5hdmlnYXRvcklzTG9n
Z2VkSW4uaCAqLzsgfTsKQEAgLTIxNjEsNiArMjE2MCw5IEBACiAJCTcyN0E3RjNBMjQwNzhCODQw
MDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAv
KiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2
ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5
RDA1M0MyNTMyRUVFMzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyog
TmF0aXZlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3MjlEMDUzRDI1MzJFRjkxMDA0MjIwOTggLyogTmF0aXZlSW1hZ2VQdHIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTM5MjUzMkQy
RTcwMDQyMjA5OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmlt
YXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNB
RTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMg
LyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICov
OyB9OwpAQCAtOTQ4Nyw3ICs5NDg5LDYgQEAKIAkJNkIwQTA3RjAyMUZBNEI1QzAwRDU3MzkxIC8q
IEFkQ2xpY2tBdHRyaWJ1dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZENsaWNrQXR0cmlidXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkIwQTA3RjEyMUZBNEI1QzAwRDU3Mzkx
IC8qIEFkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBZENsaWNrQXR0
cmlidXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QjFGNDgwRjIyOTg5
RUM0MDBERThCODIgLyogQ3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTZCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkI0RDQxMkIyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dl
ZEluU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dlZEluU3RhdHVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZCNEQ0MTJDMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0
YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnZWRJblN0YXR1cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZCNEU4NjEyMjIxQjcxM0YwMDIyRjM4OSAvKiBSZWdpc3Ry
YWJsZURvbWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RyYWJsZURvbWFpbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTkyMyw2ICs5OTI0LDggQEAKIAkJNzI3QUZFRDMxQTJF
QTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNS
R0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NDIzRDY4NkE2MDBD
QzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2
MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
cmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MkUyNTMxM0Uy
NjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzI5RDA1MzkyNTMyRDJFNzAwNDIyMDk4IC8qIE5hdGl2ZUltYWdlUHRyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hdGl2ZUltYWdlUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFD
M0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdl
QnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1
ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTYyM0Ux
NzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjYyMjAsOCArMjYyMjMsOCBAQAogCQkJCTA3QjkzRkY5MjNCOTJBQUEwMDM2
RjhFQSAvKiBNSU1FVHlwZUNhY2hlLmggKi8sCiAJCQkJMzE0QkUzQTQxQjMxMDNGQjAwMTQxOTgy
IC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgKi8sCiAJCQkJMzE0QkUzQTUxQjMxMDNG
QjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovLAotCQkJCTZCMzQ4MDky
MEVFRjUwRDQwMEFDMUI0MSAvKiBOYXRpdmVJbWFnZS5oICovLAogCQkJCTU1QTMzNkY2MUQ4MjA5
RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAorCQkJCTcyOUQwNTM5MjUzMkQyRTcwMDQy
MjA5OCAvKiBOYXRpdmVJbWFnZVB0ci5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0
RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5o
ICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUu
Y3BwICovLApAQCAtMjYyMzksNiArMjYyNDIsNyBAQAogCQkJCTA3NEU4MkI5MThBNjlGMEUwMDdF
RjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4MDBE
OEFBRjMgLyogUmVnaW9uLmNwcCAqLywKIAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyog
UmVnaW9uLmggKi8sCisJCQkJNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbW90ZVJlc291
cmNlSWRlbnRpZmllci5oICovLAogCQkJCTA3M0ExNTUxMjE3N0EzOTgwMEVBMDhGMiAvKiBSZW1v
dGVWaWRlb1NhbXBsZS5jcHAgKi8sCiAJCQkJMDczQTE1NTMyMTc3QTM5QTAwRUEwOEYyIC8qIFJl
bW90ZVZpZGVvU2FtcGxlLmggKi8sCiAJCQkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJl
bmRlcmluZ01vZGUuaCAqLywKQEAgLTMzMTY4LDcgKzMzMTcyLDggQEAKIAkJCQkzMTRCRTNBNzFC
MzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5vZGVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQk2QjM0ODA5NDBFRUY1MEQ0MDBBQzFCNDEgLyogTmF0aXZlSW1h
Z2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUQwNTNDMjUzMkVFRTMwMDQyMjA5OCAvKiBOYXRp
dmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1M0QyNTMyRUY5MTAwNDIyMDk4IC8q
IE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBB
MDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMw
Qjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtMzM1NDEsNiArMzM1NDYsNyBAQAogCQkJCTQ2Qjk1MTlBMjA3RDYzNTQw
MEE3RDJERCAvKiBSZW1vdGVGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMzEyRTkyMkZD
RDdDMDAwMTIwNEVDIC8qIFJlbW90ZVBsYXliYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMz
MTJFQjIyRkNEN0M5MDAxMjA0RUMgLyogUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDczQTE1NTQyMTc3QTQy
NjAwRUEwOEYyIC8qIFJlbW90ZVZpZGVvU2FtcGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDZD
MEQ4RjBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTMzMDlFMDUwOTlFNjQ5MjAwNTZFNTgxIC8qIFJlbW92ZU5vZGVDb21tYW5kLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNDM5YjZh
OWQ3ZDgxMjBkOTFlMWUxYWZjNTZkMWFhZjZiZTBiNDllNC4uNjJmNTlkNjkyYjdmMzZkNjk5NTc0
YWQ1MGM4MThmOTk5NzNkNzI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAg
LTYwMSwxMCArNjAxLDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2Vk
KGNvbnN0IEltYWdlJiwgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0KIAorICAgIHZvaWQgZHJhd05h
dGl2ZUltYWdlKGNvbnN0IEltYWdlJiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgIH0KKwogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFn
ZSYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3Qg
SW1hZ2UmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZh
aWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCog
PSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdl
JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSBvdmVycmlkZSB7IH0KKwogICAgIHZvaWQgY2hhbmdl
ZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGUg
eyB9CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJy
aWRlIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApp
bmRleCA1Y2M5MzM4MzI1NzRkY2JlYmVkODJjMmMwYmNlOGYwMGMyYmNhNzJlLi44MmQyOTE5Yzgz
Y2E3YzQwYmViM2Y5MDJmOGM2Yzc4YmVlN2ViZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQxMSw2ICs0MTEsMTcgQEAgdm9pZCBDYWNoZWRJ
bWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6ZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdl
JiBpbWFnZSwgbG8KICAgICAgICAgY2FjaGVkSW1hZ2UtPmRlY29kZWRTaXplQ2hhbmdlZChpbWFn
ZSwgZGVsdGEpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgZm9yIChh
dXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpIHsKKyAgICAgICAgaWYgKCZpbWFnZSAh
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucywgY2FjaGVkSW1hZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1h
Z2VPYnNlcnZlcjo6ZGlkRHJhdyhjb25zdCBJbWFnZSYgaW1hZ2UpCiB7CiAgICAgZm9yIChhdXRv
IGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCkBAIC00MzQsNiArNDQ1LDEyIEBAIHZvaWQg
Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmltYWdlRnJhbWVBdmFpbGFibGUoY29u
c3QgSW1hZ2UmIGltYWdlLCBJCiAgICAgICAgIGNhY2hlZEltYWdlLT5pbWFnZUZyYW1lQXZhaWxh
YmxlKGltYWdlLCBhbmltYXRpbmdTdGF0ZSwgY2hhbmdlUmVjdCwgZGVjb2RpbmdTdGF0dXMpOwog
fQogCit2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpuYXRpdmVJbWFnZVdp
bGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBu
YXRpdmVJbWFnZSkKK3sKKyAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdl
cykKKyAgICAgICAgY2FjaGVkSW1hZ2UtPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGltYWdl
LCBuYXRpdmVJbWFnZSk7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2
ZXI6OmNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0
KQogewogICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQpAQCAtNjg5
LDYgKzcwNiwxNiBAQCB2b2lkIENhY2hlZEltYWdlOjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0
IEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSBhbgogICAgICAgICBtX2NsaWVudHNX
YWl0aW5nRm9yQXN5bmNEZWNvZGluZy5jbGVhcigpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpu
YXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSkKK3sKKyAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCisg
ICAgICAgIHJldHVybjsKKworICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZElt
YWdlQ2xpZW50PiBjbGllbnRXYWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkSW1h
Z2VDbGllbnQqIGNsaWVudCA9IGNsaWVudFdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+
bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQobmF0aXZlSW1hZ2UpOworfQorCiB2b2lkIENhY2hl
ZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgSW50UmVjdCog
cmVjdCkKIHsKICAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDcyZDU5YzFmZjQ4NDVjMjMyNzU5MjBiYzhkMTJm
MjczNDMyN2Y3MmMuLjg2Nzk4MzJhNGNjMTBiYzY0ZjdhM2U1NGIyNTliZTUzZmE3MTI4ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xNDksMTAgKzE0
OSwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2Vk
KGNvbnN0IEltYWdlJiwgRW5jb2RlZERhdGFTdGF0dXMpIGZpbmFsOwogICAgICAgICB2b2lkIGRl
Y29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgZmluYWw7CisK
KyAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRHJhdyhjb25z
dCBJbWFnZSYpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNv
bnN0IEltYWdlJikgZmluYWw7CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25z
dCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3Qg
PSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5h
bDsKKyAgICAgICAgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYs
IGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgZmluYWw7CisKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5S
ZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgZmluYWw7CiAKQEAgLTE2NCw2ICsx
NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpOwogICAgIGJv
b2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJik7CiAgICAgdm9pZCBpbWFnZUZy
YW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0
dXM6OkludmFsaWQpOworICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3Qg
SW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChj
b25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKGNvbnN0IEltYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggYmE2NDQ1YjdlYTdlZDk2M2Q2MWJmZjMwZjI4YTlh
NGVkN2Y5YzEzNi4uMjFhYWYwN2YxYmI1ZDUzYjkyOTQyMjRiNjQ0MzcyYWJkMzUyYjAxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKQEAg
LTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiSW1hZ2VUeXBlcy5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNiArNDgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVk
IHdoZW4gYSBuZXcgZGVjb2RlZCBmcmFtZSBmb3IgYSBsYXJnZSBpbWFnZSBpcyBhdmFpbGFibGUg
b3Igd2hlbiBhbiBhbmltYXRlZCBpbWFnZSBpcyByZWFkeSB0byBhZHZhbmNlIHRvIHRoZSBuZXh0
IGZyYW1lLgogICAgIHZpcnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZh
aWxhYmxlKENhY2hlZEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogY2hhbmdlUmVjdCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBjaGFuZ2VSZWN0KTsgcmV0
dXJuIFZpc2libGVJblZpZXdwb3J0U3RhdGU6Ok5vOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF0
aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgTmF0aXZlSW1hZ2VQdHImKSB7IH0KKwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2Fj
aGVkSW1hZ2UmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgK
aW5kZXggYTE0MTNjNmY2NzliMTVlOTA3YzdiNmNmYTc2MDVmMjcwZTJmOTU1Ny4uNTc0NDdmZjFh
ZjA0NmM2NDhlODRkOTc2YWJmMDA2MTBiZjAwMjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmgKQEAgLTI0LDcgKzI0LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGI0
NzZhMzViODJkOTM3MDhkM2IwZjJiNGQxYTZkMjU0ODEyZDBlMTEuLjBhZjZjM2Q4YjIzMTg1MTc3
ODliMDcyMzQ1Zjk2NzQzYjFkN2Y2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJC
aXRtYXBJbWFnZS5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0
cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKQEAgLTIwNCw2ICsyMDUs
MjQgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAorc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShCaXRtYXBJ
bWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQoreworICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVz
IGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KKyAgICBJbnRTaXplIHN1YnNh
bXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUobmF0aXZlSW1hZ2UpOworICAgIGlmIChv
cHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKKyAgICAgICAgc3Vic2Ft
cGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKKwor
ICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQg
aW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgorICAg
IEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1wbGVk
SW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qo
c3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBs
ZWRJbWFnZVNpemUpKTsKKworICAgIGlmIChpbWFnZS5pbWFnZU9ic2VydmVyKCkpCisgICAgICAg
IGltYWdlLmltYWdlT2JzZXJ2ZXIoKS0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBu
YXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShu
YXRpdmVJbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1wdHkoKSkKQEAgLTI5
Miw5ICszMTEsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRp
b24gPSBvcHRpb25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdl
KGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKG9yaWVudGF0
aW9uKSksIHsgb3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFn
ZSgqdGhpcywgY29udGV4dCwgaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUo
b3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UKLSAg
ICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwg
SW50U2l6ZShzaXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UoKnRoaXMsIGNvbnRleHQsIGltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShz
aXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGlu
Z1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIApA
QCAtMzc5LDcgKzM5OCw3IEBAIFN1YnNhbXBsaW5nTGV2ZWwgQml0bWFwSW1hZ2U6OnN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZUZhY3RvcihHcmFwaGljc0NvbnRleHQmIGNvCiB7CiAjaWYgVVNFKENH
KQogICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBE
RiBjb250ZXh0cy4KLSAgICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpKSA9PSBrQ0dDb250ZXh0VHlwZVBERikKKyAgICBpZiAoY29udGV4dC5oYXNQbGF0Zm9y
bUNvbnRleHQoKSAmJiBDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkp
ID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICByZXR1cm4gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3RkOjptaW4oZmxvYXQoMSksIHN0ZDo6bWF4
KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9yLmhlaWdodCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCA1NTVjYzY2NDU3MGEzNGJlYTk5NWRlY2NkNTJhYzg2MWY1ZmUzMTQ0Li43MTEzZDdmNjRlMWE3
NjI4OTgxZmMwOTk2ZmQ2OGQ4Njg1MjZiM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTczMSw2ICs3MzEsMTkg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKQoreworICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2ltcGwpIHsKKyAgICAg
ICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICBy
ZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUo
KSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdP
cHRpb25zKTsKQEAgLTc0Nyw3ICs3NjAsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbgogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6
OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmIChtX2ltcGwgJiYgaW1hZ2Uu
aXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShp
bWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMs
IG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CkBAIC03NTksNyArNzcyLDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkK
KyAgICBpZiAobV9pbXBsICYmIGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICBy
ZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwg
dGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25z
LmludGVycG9sYXRpb25RdWFsaXR5KCkpOwpAQCAtNzcyLDcgKzc4NSw3IEBAIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYg
KG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1f
aW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2Fs
ZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zKTsKIAogICAgIGlmIChoUnVsZSA9PSBJbWFn
ZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CkBAIC03OTks
NiArODEyLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+ZHJh
d0ltYWdlQnVmZmVyKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9s
YXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFs
aXR5KCkpOwogICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlv
bnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAppbmRleCBkYjRjMDAyZWNjZDIyZTZmZTk0MDg3YzY5ZjkxMjhkNDI4OTkyN2Jm
Li4yNTE5ZDdiZWExODIxOTg3ZjcxYmE3MGY0NDFmMmZmYjA1ZDJiZjAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtODYs
NiArODYsNyBAQCBjbGFzcyBHbHlwaEJ1ZmZlcjsKICNlbmRpZgogCiBjbGFzcyBBZmZpbmVUcmFu
c2Zvcm07CitjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFz
cyBHcmFkaWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEltcGw7CkBAIC0zMzQsMTAgKzMzNSw2
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAotI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8
fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSk7Ci0jZW5kaWYKLQogI2lmIFVTRShDRykgfHwgVVNFKERJUkVD
VDJEKQogICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAgdm9pZCBhcHBseUZpbGxQ
YXR0ZXJuKCk7CkBAIC0zODMsNiArMzgwLDggQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9LCBDYWNoZWRJbWFnZSogPSBudWxscHRyKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIElt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpG
cm9tSW1hZ2UgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CkBAIC02NTIsNiArNjUxLDggQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1GaWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYsIGNvbnN0IENvbG9yJik7CiAKKyAgICB2b2lkIHBsYXRmb3JtRHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpOworCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVMaW5lQm91bmRz
QW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGlu
ZywgQ29sb3ImKTsKIAogICAgIGZsb2F0IGRhc2hlZExpbmVDb3JuZXJXaWR0aEZvclN0cm9rZVdp
ZHRoKGZsb2F0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAzZDUwNzViY2VkY2JmNTAyODcxY2Q1
NTA5MzVmNTFhYzhkYjJmNTVjLi5mNDRkOWU1NDNhMzk0NDAzOWZlOThmZTM0YzA4MzI5NTkzNGMy
ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5oCkBAIC03Miw5ICs3Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwg
VVNFKERJUkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgPSAwOwotI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IGQzOWZlYWE4MmYzNzFjZjhh
YWY3NmQyN2YzMzU3M2YzNTE5OGQwODkuLmVhNGQ2M2E5NGVkNmNmMDIyM2ZkOWVhMDUwODhhMzdi
ZDcxMmQ2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAt
MzIsOCArMzIsOSBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VQ
YWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCi0jaW5jbHVkZSAiTmF0
aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KQEAgLTcyLDcgKzczLDYgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLXN0
cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xh
c3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2Rl
ZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGQxNDY0OTJj
NGE4ZGY5MzVjYWY5NGI5ZmI5NTU5MDlhYWQxY2JhZjAuLmRiZTAyNWVlOWUxYTQ0MGYwMmVhOTY2
NGEzNGY5OGEwZjZjNTFhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgeworY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBEcmF3
aW5nQ29udGV4dDsKIH0KIApAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IERpc3BsYXlMaXN0OjpEcmF3aW5nQ29udGV4dCogZHJhd2luZ0NvbnRleHQoKSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3QmKSB7IH0KIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zv
cm0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3Qg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaAppbmRleCBjMDEwYTBmMGNmY2Q4YzVlN2FiNmM5NGM1YzNjMzZmNDgzODZk
MDFmLi41OGZjMTQ4MzZkOTJhYTIwMDE5ZjIwZmVlZGM1NTcxZTlhYjVlOTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
aApAQCAtMzEsMTMgKzMxLDE0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5j
bHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogY2xhc3MgSG9zdFdpbmRvdzsK
IGNsYXNzIEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VPYnNlcnZlci5oCmluZGV4IDhiMDg5ZTU5NGMxYWZjY2VlNGZmYjUwNzExNTk3ODc0Njk1Y2Iy
ZGUuLmI0ZDcxMGFjNjczMGM4NWRmZWVhNzVlYWIwZjNkYjY2NzZmNjBmMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTQ1LDEw
ICs0NSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hh
bmdlZChjb25zdCBJbWFnZSYsIEVuY29kZWREYXRhU3RhdHVzKSB7IH07CiAgICAgdmlydHVhbCB2
b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgPSAw
OwogCisgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYsIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERyYXcoY29uc3QgSW1hZ2UmKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuRGVzdHJveURl
Y29kZWREYXRhKGNvbnN0IEltYWdlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUZyYW1l
QXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVj
dCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6
OkludmFsaWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95
ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpID0gMDsKKwogICAgIHZpcnR1
YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogY2hhbmdl
UmVjdCA9IG51bGxwdHIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoY29uc3QgSW1hZ2UmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc3NTAzMjIzOWE1ZDVhYmFhNzYzZjdh
MjYzZWQ3Y2IyNDU5ODI2NTIuLjQ1NTE1YzU5YTFmZjI4NGNkOGQyODAzODM3YjA4NWI1MDIyZDZj
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKQEAgLTEzMCw4ICsxMzAsMTAgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29k
ZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKQogICAgIEFTU0VS
VChmcmFtZUNvdW50IDw9IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgZnJhbWVDb3VudDsgKytpbmRleCkgewotICAgICAgICBpZiAoaW5kZXgg
PT0gZXhjbHVkZUZyYW1lKQorICAgICAgICBpZiAoaW5kZXggPT0gZXhjbHVkZUZyYW1lIHx8ICFt
X2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkpCisgICAgICAgICAg
ICBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCktPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKCpt
X2ltYWdlLCBtX2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSk7CiAgICAgICAgIGRlY29kZWRT
aXplICs9IG1fZnJhbWVzW2luZGV4XS5jbGVhckltYWdlKCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCA2YjJkODFlMzVi
MDhjZjc0ZjRmMzYxYWViYzc0ZjMxMjljN2Q5YjdmLi40MzM3ODc5MGIyMjkxZWEwMGIxMjA4ZTBh
NWNiYzk3MjlmNzcxZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLgogICoKQEAgLTI3LDUyICsyNywxNiBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCi0KLSNpZiBV
U0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFn
ZSogQ0dJbWFnZVJlZjsKLSNlbGlmIFVTRShDQUlSTykKLSNpbmNsdWRlICJSZWZQdHJDYWlyby5o
IgotI2VsaWYgVVNFKFdJTkdESSkKLSNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKLSNlbmRpZgot
Ci0jaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgPGQyZDEu
aD4KLSNpbmNsdWRlIDx3aW5jb2RlYy5oPgotI2VuZGlmCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQ
dHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIEZsb2F0
UmVjdDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci0KLSNpZiBVU0Uo
Q0cpCi10eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlm
IFVTRShESVJFQ1QyRCkKLXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0
cjsKLSNlbGlmIFVTRShDQUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0
aXZlSW1hZ2VQdHI7Ci0jZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0
bWFwPiBOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIG5h
dGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogYm9vbCBuYXRpdmVJbWFnZUhh
c0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotCi12b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBzY2FsZUZhY3RvciwgY29u
c3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpOwotCiB2b2lk
IGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLQotY2xh
c3MgTmF0aXZlSW1hZ2VIYW5kbGUgewotcHVibGljOgotICAgIE5hdGl2ZUltYWdlUHRyIGltYWdl
OwotfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZVB0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3NTE0
MDcxZDA3Yzk1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0Uo
Q0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSog
Q0dJbWFnZVJlZjsKKyNlbGlmIFVTRShDQUlSTykKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgor
I2VsaWYgVVNFKFdJTkdESSkKKyNpbmNsdWRlICJTaGFyZWRCaXRtYXAuaCIKKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCit0eXBlZGVmIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK3R5cGVkZWYgQ09N
UHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbGlmIFVTRShDQUlSTykKK3R5cGVk
ZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CisjZWxpZiBVU0UoV0lO
R0RJKQordHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsKKyNlbmRp
ZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhZjU0MmRmZWM4NDdhYmMz
NzFhYTJmMWU4ZTRiOGRkOWZiMTEwZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaApAQCAtMCwwICsx
LDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2VudW0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZVJlc291cmNl
SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYTEw
NDY1NmNiNWQ1ZGRlYTAzMjFkYWE0NGEwNDQ2NTE3NTA4OGU0Zi4uMmFiOWNlM2JiYTI1ZWE1NDg1
NDQ4ZjM0YWE3NzdhZmUwNGU3MzRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApA
QCAtMTIzLDE2ICsxMjMsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIENhaXJvOjpkcmF3
UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmls
bENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQ29sb3IpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1f
aW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIEFTU0VSVChoYXNQbGF0
Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENh
aXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVz
dFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCBiNjViNGQ2NDQwNmJlYjc2YzQwOWQzZThj
NjU0OTc1Y2E5ZjdlYjYzLi5mZTkwNDk1MjdhZmVjZWRiMTdiODFmNjJjNDZlOGYyNzFkYjgyNzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI3OSwxMyArMjc5
LDE5IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdUaWxl
ZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50
aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucywgQ2FjaGVkSW1hZ2UqKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwog
ICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKICAgICBDYWlybzo6
ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBz
dGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK2Jvb2wgR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
Cit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCBlNWUy
MDc0OGM2ZDc2MjBmMTBjZjIxNTY2MjhlZjdlMGJlNjAxYzdiLi4yYzFjNzAxNTRjMWZhNDY2MDcy
Y2U3MjJmZjY0MzY2ZjVhZTk3OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aApAQCAtNzQsNyArNzQsOSBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxl
ZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1h
Z2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworCisgICAgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYsIENhY2hlZEltYWdlKikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGVhMzdjNzg2ZWY2
ZGI2ZTVhZmViOTE3Nzk4ZmE1MzFiZjk4YWM4NGQuLmMyOTJkYjQyY2MwZjlmMGY5YzQ3Yzc4ZWQ2
OWMyZDgzMzFjOTgyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI4MCwxNiArMjgwLDExIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRh
LT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENH
SW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1EcmF3
TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
aW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
ICNpZiAhTE9HX0RJU0FCTEVECiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAppbmRleCA1Y2M1YzIwN2I0NGE0ODM1YmUy
ZTA4MDI4YTNhNzEwOTVhNTVlMWUwLi40MDBkNmVmMGE0NTc3ZDVkN2NjNWJkOWNiNjQ2YTViYWRl
YmRhZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9O
YXRpdmVJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ29sb3Iu
aCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHZW9tZXRyeVV0aWxpdGllcy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgog
I2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKQEAgLTY5LDQwICs2OCw2IEBAIENv
bG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSkKICAgICByZXR1cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFsw
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAq
IDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewot
ICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21h
bGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRp
dmVJbWFnZVNpemUoaW1hZ2UpOwotICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dp
ZHRoQXNIZWlnaHQoKSkKLSAgICAgICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJ
bWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKLQotICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNv
b3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0
IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3Qg
PSBzcmNSZWN0OwotICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCi0gICAg
ICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3Jj
U2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKLQotICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKLX0KLQotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNjYWxlRmFjdG9yLCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3Qm
IHNvdXJjZSkKLXsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKTsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAgICBD
R0NvbnRleHRDbGlwVG9SZWN0KGNnQ29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvbi54KCks
IGRlc3RpbmF0aW9uLnkoKSwgc291cmNlLndpZHRoKCksIHNvdXJjZS5oZWlnaHQoKSkpOwotICAg
IENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwotCi0gICAgQ0dGbG9hdCBpbWFn
ZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7Ci0g
ICAgQ0dGbG9hdCBpbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAvIHNj
YWxlRmFjdG9yOwotCi0gICAgQ0dGbG9hdCBkZXN0WCA9IGRlc3RpbmF0aW9uLngoKSAtIHNvdXJj
ZS54KCk7Ci0gICAgQ0dGbG9hdCBkZXN0WSA9IC1pbWFnZUhlaWdodCAtIGRlc3RpbmF0aW9uLnko
KSArIHNvdXJjZS55KCk7Ci0KLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY2dDb250ZXh0LCBDR1Jl
Y3RNYWtlKGRlc3RYLCBkZXN0WSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQo
KSk7Ci0KLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Ci19Ci0KIHZvaWQg
Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7
CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGE2MzgzNjky
MWQ4ZGZjYTE2NjM4YmQ4NmFhOTMzZWZhN2UyNjRkODEuLmIzNTg5M2M1ODJlNDE3YzJiYjMzNTJh
NTE2ZTNjYjU5ZmUwMjQzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02Miw4ICs2Miw5
IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3SW1hZ2UsCiAgICAg
RHJhd1RpbGVkSW1hZ2UsCiAgICAgRHJhd1RpbGVkU2NhbGVkSW1hZ2UsCi0jaWYgVVNFKENHKSB8
fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIERyYXdJbWFnZUJ1ZmZlciwKICNlbmRpZgogICAgIERy
YXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd2luZ0NvbnRleHQuY3BwCmluZGV4IDIzY2MwN2U4YWU0NDJiZGNlYTBkMzY3NGE1YTg1
NTFjNjVjZmRjODcuLmQ0NjE3ZDM1MTZmNGYzZTUxZDc1ZDY0NDM0YTZhMzk0NTdhMDAwMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKQEAg
LTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiAKLURyYXdpbmdDb250ZXh0OjpEcmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpP
YnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3Qg
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RN
LCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KFsmXShHcmFw
aGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0s
IG9ic2VydmVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlM
aXN0Q29udGV4dCwgbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRS
ZWN0KHsgfSwgbG9naWNhbFNpemUpLCBpbml0aWFsQ1RNLCBkZWxlZ2F0ZSk7CiAgICAgfSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmluZGV4
IDdiNjczZjMyYWQ4MTVhNTAwODFiN2U3YWIxMDgxMzE3MTdmZGU1NDMuLjIyZWQyNTZlODBhZDI5
M2EwNTIwNjliNzQzMDg4YTEzNTFmNDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QgewogY2xhc3MgRHJhd2luZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9
IHsgfSwgUmVjb3JkZXI6Ok9ic2VydmVyKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JU
IERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51bGxw
dHIpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29u
c3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBSZWNvcmRlciYgcmVjb3JkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlci5oCmluZGV4IDZmZDkxMmRmYjhmZTExYzA5OGRkNjEyNmE4Yzg3OGFjNmJh
N2FlMDIuLjMyNTk5ZTA2MmQ3Y2Y1OWQxZGMyZWFkMDFlNzYwZDY2ZTNmN2VjM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRl
SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVyIHsKK2Ns
YXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+
IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZm
ZXI8QmFja2VuZFR5cGU+OwogCiBwdWJsaWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGljOgog
CiAgICAgSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNr
ZW5kLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXIoV1RGTW92ZShkYXRhQmFja2VuZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChz
aXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAgICwgbV9k
cmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCiAgICAg
ewogICAgIH0KIAotICAgIEltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAg
ICAgOiBtX2RyYXdpbmdDb250ZXh0KHNpemUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXpl
KSwgdGhpcykKKyAgICBJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29yZGVy
OjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBudWxscHRyKQorICAgICAgICA6IG1fZHJhd2luZ0NvbnRl
eHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdDb250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkKICAgICB7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMThkNzBj
ZmJkMjQwOTg1ODY4NDQ5ZmIzNTlhOWY4NWViZGZkMzYzNi4uZjE1Yzc3MGUxZGE0ZDUxZjVmYTQ2
NjFlN2M1MGQ3NDA0ZjM0YWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAi
SW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBVU0UoQ0cp
CkBAIC0xMDYsOSArMTA1LDExIEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVt
JiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZEltYWdlPihp
dGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAgICAg
IHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0pKTsKLSNp
ZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPihpdGVt
KSk7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+
KGl0ZW0pKTsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAg
ICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKSk7CkBAIC03MDMsMzIg
KzcwNCwyMiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi0j
aWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLURyYXdOYXRpdmVJbWFn
ZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3
TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCi0jaWYg
VVNFKENHKQotICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBDYWlyby4K
ICAgICAsIG1faW1hZ2UoaW1hZ2UpCi0jZW5kaWYKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6
ZSkKICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNy
Y1JlY3QpCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKIHsKLSNpZiAhVVNFKENHKQotICAgIFVO
VVNFRF9QQVJBTShpbWFnZSk7Ci0jZW5kaWYKIH0KIAogRHJhd05hdGl2ZUltYWdlOjp+RHJhd05h
dGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotI2lmIFVTRShDRykKLSAgICBjb250ZXh0
LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3Qs
IG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OwotI2VuZGlmCisgICAgQVNTRVJUKG5hdGl2ZUltYWdlUHRyKCkpOworICAgIGNvbnRleHQuZHJh
d05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlUHRyKCksIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
UmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQpAQCAt
NzM5LDYgKzczMCwzMyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CiAgICAgcmV0dXJuIHRzOwogfQor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorRHJhd0ltYWdlQnVmZmVyOjpEcmF3SW1hZ2VCdWZm
ZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBl
OjpEcmF3SW1hZ2VCdWZmZXIpCisgICAgLCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcihyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkK
KyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCit7Cit9
CisKK0RyYXdJbWFnZUJ1ZmZlcjo6fkRyYXdJbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKKwordm9p
ZCBEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Cit7CisgICAg
Ly8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRzIDw8IHN0YXRpY19jYXN0
PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdGUt
cmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOwor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKKyAgICB0
cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOworICAg
IHJldHVybiB0czsKK30KICNlbmRpZgogCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTQ2OSw4ICsxNDg3LDkgQEAgc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTogdHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2Ui
OyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogdHMgPDwg
ImRyYXctdGlsZWQtc2NhbGVkLWltYWdlIjsgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJ
Uk8pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRp
dmUtaW1hZ2UiOyBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsK
ICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0
ZXJuIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJl
Y3QiOyBicmVhazsKQEAgLTE1NzEsMTAgKzE1OTAsMTMgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3VGlsZWRTY2FsZWRJbWFnZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2Nh
bGVkSW1hZ2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKLSNpZiBVU0UoQ0cpIHx8IFVTRShDQUlS
TykKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGRv
d25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAg
ICAgIHRzIDw8IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oaXRlbSk7CisgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHRzIDw8
IGRvd25jYXN0PERyYXdQYXR0ZXJuPihpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCmluZGV4IGNiNjg0ZDIzY2U3NWI0ZmFiOWVjNDEzMTYyN2FjZDMyZDYyNGFlZGIuLjNiNjRk
M2JhMzQwNzU0NjAzMWVlOWJiMGNhYTMyNzY1OWY5NTRkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIK
KyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAgLTE0MzIsMzIgKzE0MzMs
NTIgQEAgT3B0aW9uYWw8UmVmPERyYXdUaWxlZFNjYWxlZEltYWdlPj4gRHJhd1RpbGVkU2NhbGVk
SW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKICAgICByZXR1cm4gRHJhd1RpbGVkU2NhbGVk
SW1hZ2U6OmNyZWF0ZSgqaW1hZ2VIYW5kbGUtPmltYWdlLCAqZGVzdGluYXRpb24sICpzb3VyY2Us
ICp0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgKmltYWdlUGFpbnRpbmdPcHRpb25zKTsK
IH0KIAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiBjbGFzcyBE
cmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgdXNpbmcgTmF0aXZlSW1hZ2VUeXBl
ID0gVmFyaWFudDxOYXRpdmVJbWFnZVB0ciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKwor
ICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlbW90ZVJl
c291cmNlSWRlbnRpZmllcj4obV9pbWFnZSkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPihtX2ltYWdlKTsK
KyAgICB9CisKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZVB0cigpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TmF0aXZlSW1hZ2VQdHI+KG1f
aW1hZ2UpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6
OmdldDxOYXRpdmVJbWFnZVB0cj4obV9pbWFnZSk7CisgICAgfQorI2Vsc2UKKyAgICB1c2luZyBO
YXRpdmVJbWFnZVR5cGUgPSBOYXRpdmVJbWFnZVB0cjsKKworICAgIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlUHRyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQorI2VuZGlmCisgICAgc3Rh
dGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogICAg
IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpOwogCisg
ICAgRmxvYXRTaXplIGltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAg
ICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZs
b2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVj
dDsgfQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X29wdGlvbnM7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9u
YWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAg
IFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAg
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotI2lmIFVTRShDRykK
LSAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwotI2VuZGlmCisgICAgTmF0aXZlSW1hZ2VUeXBl
IG1faW1hZ2U7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rl
c3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTQ2NywxMCArMTQ4
OCw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotI2lmIFVTRShDRykKLSAg
ICBOYXRpdmVJbWFnZUhhbmRsZSBoYW5kbGUgeyBtX2ltYWdlIH07Ci0gICAgZW5jb2RlciA8PCBo
YW5kbGU7Ci0jZW5kaWYKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2U7CiAgICAgZW5jb2RlciA8PCBt
X2ltYWdlU2l6ZTsKICAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OwogICAgIGVuY29k
ZXIgPDwgbV9zcmNSZWN0OwpAQCAtMTQ4MCwxMiArMTQ5OCwxMCBAQCB2b2lkIERyYXdOYXRpdmVJ
bWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgogT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0jaWYgVVNFKENHKQotICAgIE9wdGlvbmFsPE5hdGl2
ZUltYWdlSGFuZGxlPiBoYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBoYW5kbGU7Ci0gICAgaWYgKCFo
YW5kbGUpCisgICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VUeXBlPiBpbWFnZTsKKyAgICBkZWNvZGVy
ID4+IGltYWdlOworICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0jZW5kaWYKIAogICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1hZ2VTaXplOwogICAgIGRlY29k
ZXIgPj4gaW1hZ2VTaXplOwpAQCAtMTUwNywxNCArMTUyMyw3NSBAQCBPcHRpb25hbDxSZWY8RHJh
d05hdGl2ZUltYWdlPj4gRHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBpZiAoIW9wdGlvbnMpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSNpZiBV
U0UoQ0cpCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBoYW5kbGUtPmltYWdlOwotI2Vsc2UK
LSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSA9IG51bGxwdHI7Ci0jZW5kaWYKLSAgICByZXR1cm4g
RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJl
Y3QsICpzcmNSZWN0LCAqb3B0aW9ucyk7CisgICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3Jl
YXRlKCppbWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRp
b25zKTsKIH0KLSNlbmRpZgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorY2xhc3MgRHJhd0lt
YWdlQnVmZmVyIDogcHVibGljIERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PERyYXdJbWFnZUJ1ZmZlcj4gY3JlYXRlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdJbWFnZUJ1ZmZlcihyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKTsKKyAgICB9
CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3SW1hZ2VCdWZmZXIoKTsKKworICAg
IFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsgfQorICAgIEZsb2F0UmVjdCBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGlu
YXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFn
ZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3SW1h
Z2VCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQ
T1JUIERyYXdJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJl
Y3Q7IH0KKworICAgIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRl
bnRpZmllcjsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgRmxvYXRSZWN0
IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9OworCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9yZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBlbmNvZGVy
IDw8IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fb3B0aW9uczsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBEcmF3SW1hZ2VC
dWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFJlbW90ZVJl
c291cmNlSWRlbnRpZmllcj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIg
Pj4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlm
ICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IHNvdXJjZTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZTsKKyAgICBpZiAo
IXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPElt
YWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAg
ICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gRHJhd0ltYWdlQnVmZmVyOjpjcmVhdGUoKnJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgKmRl
c3RpbmF0aW9uLCAqc291cmNlLCAqb3B0aW9ucyk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJs
aWM6CkBAIC0yOTczLDEwICszMDUwLDEzIEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KCp0aGlzKTsK
ICAgICAgICAgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1Qy
RCkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIGVuY29kZXIg
PDwgZG93bmNhc3Q8RHJhd05hdGl2ZUltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6
CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVyPigqdGhpcyk7Cisg
ICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAg
ICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd1BhdHRlcm4+KCp0aGlzKTsKQEAgLTMxNjQs
MTEgKzMyNDQsMTUgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdUaWxlZFNjYWxlZEltYWdlOjpk
ZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7Ci0jaWYgVVNFKENHKSB8fCBV
U0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShk
ZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4o
V1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBpZiAoYXV0byBp
dGVtID0gRHJhd0ltYWdlQnVmZmVyOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAg
YnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAg
aWYgKGF1dG8gaXRlbSA9IERyYXdQYXR0ZXJuOjpkZWNvZGUoZGVjb2RlcikpCkBAIC0zMzI2LDgg
KzM0MTAsOSBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ds
eXBocykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2Up
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkSW1hZ2Up
CiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkU2NhbGVk
SW1hZ2UpCi0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0RJU1BMQVlMSVNUX0lURU0oRHJhd05hdGl2ZUltYWdlKQorI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2VCdWZm
ZXIpCiAjZW5kaWYKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3
UGF0dGVybikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3UmVj
dCkKQEAgLTMzODgsOCArMzQ3Myw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3SW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3VGlsZWRJbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdUaWxlZFNjYWxlZEltYWdlLAotI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElS
RUNUMkQpCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2UsCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAogI2VuZGlmCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdSZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CmluZGV4IGRkMzVlZjFhMjhhOTA3MWRhZWY5YTBhOGQ3N2Q5ODQwMWVhMDgwMWQuLjk1NTc1ZDBm
NDE0YzJlZGU1ZjE5MTAyMDA2ZTM2ZjVkODQ0YTQ3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM3LDEwICszNywxMCBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgT2JzZXJ2ZXIqIG9ic2VydmVyKQorUmVj
b3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRGVs
ZWdhdGUqIGRlbGVnYXRlKQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBpbml0
aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlM
aXN0KQotICAgICwgbV9vYnNlcnZlcihvYnNlcnZlcikKKyAgICAsIG1fZGVsZWdhdGUoZGVsZWdh
dGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJl
Y29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7CiAgICAgbV9zdGF0ZVN0YWNrLmFw
cGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKQEAgLTUyLDE1ICs1Miwx
NSBAQCBSZWNvcmRlcjo6flJlY29yZGVyKCkKICAgICBMT0coRGlzcGxheUxpc3RzLCAiUmVjb3Jk
ZWQgZGlzcGxheSBsaXN0OlxuJXMiLCBtX2Rpc3BsYXlMaXN0LmRlc2NyaXB0aW9uKCkuZGF0YSgp
KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6cHV0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gaW5wdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGF0YSYgaW1hZ2VE
YXRhLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3Jt
YXQpCit2b2lkIFJlY29yZGVyOjpwdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBp
bnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiBpbWFnZURhdGEsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24g
ZGVzdEZvcm1hdCkKIHsKLSAgICBhcHBlbmRJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJ
bWFnZURhdGE6OmNyZWF0ZShpbnB1dEZvcm1hdCwgaW1hZ2VEYXRhLCBzcmNSZWN0LCBkZXN0UG9p
bnQsIGRlc3RGb3JtYXQpKTsKKyAgICBhcHBlbmRJdGVtKFB1dEltYWdlRGF0YTo6Y3JlYXRlKGlu
cHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCkpOwog
fQogCiB2b2lkIFJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJiBpdGVtKQogewot
ICAgIGlmIChtX29ic2VydmVyKQotICAgICAgICBtX29ic2VydmVyLT53aWxsQXBwZW5kSXRlbShp
dGVtKTsKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+d2lsbEFwcGVu
ZEl0ZW0oaXRlbSk7CiAKICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkKICNpZiBVU0UoQ0cp
CkBAIC0xMzIsMTIgKzEzMiwyOSBAQCBJbWFnZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdUaWxl
ZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdAogICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlY29yZDsKIH0KIAotI2lmIFVTRShDRykgfHwgVVNFKENB
SVJPKSB8fCBVU0UoRElSRUNUMkQpCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UpCiB7CisgICAgaWYgKG1fZGVsZWdhdGUgJiYgY2FjaGVkSW1hZ2UpIHsKKyAgICAgICAg
aWYgKGF1dG8gaXRlbSA9IG1fZGVsZWdhdGUtPmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oaW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsICpjYWNoZWRJbWFnZSkp
IHsKKyAgICAgICAgICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PERyYXdpbmdJdGVtPihpdGVtLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50
KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKSk7CiB9Ci0jZW5kaWYKKworYm9vbCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQoreworICAgIGlmICghbV9kZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGF1dG8gaXRlbSA9IG1fZGVsZWdhdGUtPmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKSB7CisgICAgICAgIGFwcGVuZEl0ZW1B
bmRVcGRhdGVFeHRlbnQoc3RhdGljX3JlZmVyZW5jZV9jYXN0PERyYXdpbmdJdGVtPihpdGVtLnJl
bGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCA5ZWUxZDM5MzhmMjMyZjNmMThkOTc4YWY3MTg3MDFkOGJlNDYzMDcyLi5lMTQwYmUxMWQ3ZDZh
NzY2Njc5NjE1NjlkMTQ1YzRlMzM4NWMzZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTI4LDEyICsyOCwxNCBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbC5oIgogI2luY2x1ZGUgIkltYWdlLmgiIC8v
IEZvciBJbWFnZTo6VGlsZVJ1bGUuCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIDogdWludDhfdDsKK2NsYXNzIENhY2hlZEltYWdlOwogY2xhc3MgRmxvYXRQb2ludDsKIGNs
YXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdseXBoQnVmZmVyOwpAQCAtNTMsOCArNTUsOCBAQCBjbGFz
cyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRJbXBsIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJs
aWM6Ci0gICAgY2xhc3MgT2JzZXJ2ZXI7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoR3Jh
cGhpY3NDb250ZXh0JiwgRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYs
IGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIE9i
c2VydmVyKiA9IG51bGxwdHIpOworICAgIGNsYXNzIERlbGVnYXRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwdXRJbWFnZURh
dGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VEYXRhJiwg
Y29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsKQEAgLTYzLDkgKzY1LDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChSZWY8RHJhd2luZ0l0ZW0+JiYp
OwogCi0gICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgfkRl
bGVnYXRlKCkgeyB9CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEl0ZW0+IGNyZWF0ZURyYXdJbWFn
ZUJ1ZmZlckl0ZW0oSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICAgICAgdmlydHVhbCBSZWZQdHI8SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgQ2FjaGVkSW1hZ2Um
KSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRl
bShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CiAKQEAgLTEwNCw5ICsxMDgsOSBAQCBwcml2YXRl
OgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7Ci0jZW5kaWYKKworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9h
dFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwpAQCAtMTg4LDcgKzE5Miw3
IEBAIHByaXZhdGU6CiAgICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAogICAgIERp
c3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwotICAgIE9ic2VydmVyKiBtX29ic2VydmVyOworICAg
IERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCiAgICAgVmVjdG9yPENvbnRleHRTdGF0ZSwgMzI+IG1f
c3RhdGVTdGFjazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKaW5kZXggZjMxZDM3NWIwMmRhMDk3OTI4OWFjYzIwMGRkODYyZmFlMTM0MTA0Yi4uNGI1
ZTNlNDNiMDM5NjRhNTFjMjczZTViZTdhZWRiMGRmMWFhOTFmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNYWluVGhyZWFkTm90aWZpZXIuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDE4YjRm
OGRlOTcxNzBjZTY0NGViNjRiZTNlYWI4NTdmM2E3NDMyZjQuLjYyOThjZjM2MDczYzdhZTQ0ZjQz
YzZiNTY0NDIyYjM3Yjg2Y2YxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBl
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlclBpcGUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1
ZGUgIk5pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIgogI2luY2x1ZGUgIk5p
Y29zaWFQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAKaW5kZXggMzA0ZmFjYmFiMTUyMTc5MWRhYTg2ZGIxNTMxNzUzZTM4
NjcxMDg0ZC4uN2MxNGYzZTdlZTMzOWNiM2E1MTRmOTAzYzQ4NzRkMTcxODlkNTJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAKQEAgLTU0OSw3ICs1NDksNyBAQCBJbWFnZURyYXdSZXN1bHQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdAogICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250ZXh0
KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2
UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQor
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UqKQogewogICAgIHN0cnVjdCBEcmF3TmF0
aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdlUGFpbnRpbmdPcHRp
b25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CiAgICAgICAgIHZpcnR1YWwgfkRyYXdO
YXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKQEAgLTU3MCw2ICs1NzAsMTIgQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdAogICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKK2Jvb2wg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNl
OworfQorCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmluYWwgOiBQYWlu
dGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgSW50
U2l6ZSwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxvYXRQb2ludCwg
SW1hZ2VQYWludGluZ09wdGlvbnM+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCA1NzJmZjIxNjZmNmU5NzNhNzYzYjY3Y2I2
YmI5NmY0M2YyNmE4ZDUwLi4xZDQ5MDEzYzg5Y2YxMDE0ZWM5YjJiOTIwN2RlY2VlYjkxM2MzODU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5oCkBAIC02Nyw3ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3
UmVzdWx0IGRyYXdJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdl
KFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6
OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworCisgICAgYm9vbCBk
cmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2UqKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6
OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGly
ZWN0MkQuY3BwCmluZGV4IDM3NDA3MTcxNWJjYjc5MWQ1ODlkNTBkOTliMjljNjZiMDEwYjcwODEu
LjU3YmE4NThmZjk5YzJkYjI5ZjVkOTE0OTJlNmFhYzhlZDk3NGVjOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dERpcmVjdDJELmNwcApAQCAtMjA3LDE2ICsyMDcsMTEgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBEaXJlY3QyRDo6cmVzdG9yZSgqcGxh
dGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBDT01QdHI8SUQyRDFCaXRtYXA+
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAg
IGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUlt
YWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMsIHN0YXRlLmFscGhhLCBEaXJlY3QyRDo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMjQ3YTdhZDRjZDI5NTM4ZTRlYWY0MGJk
ODAzNjk2ODYwMDhiODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotCi0j
aW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBJbWFnZUJ1ZmZlcklkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQotICAgICwgbV9pbWFnZUJ1ZmZl
cklkZW50aWZpZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotewotfQotCi12b2lkIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Y3JlYXRlQmFja2VuZChjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBoYW5kbGUpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZN
b3ZlKGhhbmRsZSksIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkucmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSk7Ci19Ci0KLXZvaWQgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Ojpjb21taXRGbHVzaENvbnRleHQoSW1h
Z2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKQotewotICAgIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OkNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllciwgbV9pbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlclByb3h5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZDA1ZWFl
ZjU0OTQxNmZkYjY0MjU5NTJlMGI0Y2YzYWEyMDVlYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2luY2x1ZGUg
IkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJ
ZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXJJZGVudGlmaWVyLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LWVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci1jbGFzcyBJbWFn
ZURhdGE7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk7Ci0KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxl
clByb3h5KCkgPSBkZWZhdWx0OwotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuIFNl
ZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4uCi0gICAgdmlydHVhbCB2
b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0QW5kQ29t
bWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VE
YXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0ID0gMDsKLQotcHJv
dGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eShSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotCi0gICAgLy8g
TWVzc2FnZXMgdG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4uCi0gICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSk7Ci0gICAgdm9pZCBjb21taXRGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIpOwotCi0gICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBiYWNrZW5kKCkgeyByZXR1
cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7IH0KLQotcHJpdmF0ZToKLSAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Owot
ICAgIEltYWdlQnVmZmVySWRlbnRpZmllciBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggNzcyMWNjZTg0NTYyNjlhZWY5MDIwYjhiZDg5NjVkZDM1
YjcyMmRkYy4uMWQxYjVlZThmY2YwN2VmYzMyOWQ3OTgxZjNiMGExYWMyZWZiZTcxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCkBAIC0yOCwyOSArMjgsMjkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSAi
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db25jcmV0ZUltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJl
cGxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNr
ZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6
Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHksIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5
ZXI6OkRlbGVnYXRlIHsKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2Vi
Q29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+Owog
ICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0OwogICAgIHVzaW5nIEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CisgICAgdXNpbmcgQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXI6OnB1dEltYWdlRGF0YTsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSwgSW1hZ2VCdWZmZXJJZGVudGlmaWVy
IGltYWdlQnVmZmVySWRlbnRpZmllcikKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHksIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Pihz
aXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSwgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBudWxscHRyLCByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQog
Ci0gICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+
JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHksIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIp
CisgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+
JiYgYmFja2VuZCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHksIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92
ZShiYWNrZW5kKSkKLSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkocmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisg
ICAgICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KQogICAgIHsKLSAgICAgICAgY3JlYXRlQmFja2VuZChtX2JhY2tlbmQtPmxvZ2lj
YWxTaXplKCksIG1fYmFja2VuZC0+YmFja2VuZFNpemUoKSwgbV9iYWNrZW5kLT5yZXNvbHV0aW9u
U2NhbGUoKSwgbV9iYWNrZW5kLT5jb2xvclNwYWNlKCksIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKCkpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5yZW1vdGVDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQobV9iYWNrZW5kLT5sb2dpY2FsU2l6
ZSgpLCBtX2JhY2tlbmQtPmJhY2tlbmRTaXplKCksIG1fYmFja2VuZC0+cmVzb2x1dGlvblNjYWxl
KCksIG1fYmFja2VuZC0+Y29sb3JTcGFjZSgpLCBtX2JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSgpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAogICAg
IH5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KCkKQEAgLTYyLDkgKzYyLDYgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hE
cmF3aW5nQ29udGV4dDsKLSAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0SW1h
Z2VEYXRhOwotCiAgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBpZiAoZGlzcGxheUxpc3QuaXRlbUNvdW50KCkpIHsKQEAgLTczLDE4ICs3MCw2IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5
TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7Ci0gICAg
ICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7Ci0gICAgICAgIGNvbW1pdEZsdXNoQ29udGV4
dChmbHVzaElkZW50aWZpZXIpOwotICAgIH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURh
dGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Qgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VEYXRh
KG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7Ci0gICAgfQotCiAgICAgYm9vbCBhcHBseShXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGl0ZW0udHlwZSgpID09IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhKSB7CkBAIC05OCwxMiArODMsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuYXBwbHlSZXNvdXJjZUl0ZW0oaXRlbSwgY29udGV4dCk7CiAgICAgfQogCiAgICAgdm9p
ZCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhJiBpdGVtLCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgewotICAgICAgICBhdXRvIHBy
b2Nlc3MgPSBiYWNrZW5kKCkuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOworICAgICAgICBh
dXRvIHByb2Nlc3MgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCk7CiAgICAgICAgIGlmICghcHJvY2VzcykKICAgICAgICAgICAgIHJldHVy
bjsKIApAQCAtMTE3LDYgKzEwMiw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgY29udGV4dC5wYWlu
dEZyYW1lRm9yTWVkaWEoKnBsYXllciwgaXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICB9CisKKyAg
ICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCmluZGV4IDc1M2E1YzhiYTk3ZmU3MjA4MzEwNThlODRjNWNkODNiNGIxNzU1Nzku
LmMxYTMxY2JjOTRiNjA2YjUwZDQxZjk5YzUwMjI3MDRkZWFlZDczOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eU1lc3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNiArNTQsMTEg
QEAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KCkKICAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVy
TWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKIH0KIAorR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworfQorCiBJ
UEM6OkNvbm5lY3Rpb24qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdAogewogICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQpAQCAtNjYsNjQgKzcx
LDQ2IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyLnRvVUludDY0KCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQor
Ym9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKERpc3Bs
YXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0
byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5nZXQoKTsKLSAgICBpZiAoIWdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuY29udGFpbnMo
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRl
cmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkKSB7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVm
ZmVyID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUobG9naWNhbFNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgKnRoaXMsIGltYWdlQnVmZmVySWRlbnRp
ZmllcikpIHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQo
aW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAocmVuZGVyaW5nTW9kZSA9PSBS
ZW5kZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRl
cmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VC
dWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKGxvZ2lj
YWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzLCBpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpKSB7Ci0gICAgICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAu
YWRkKGltYWdlQnVmZmVySWRlbnRpZmllciwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmFwcGx5UmVzb3VyY2VJ
dGVtKGl0ZW0sIGNvbnRleHQpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlQ3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IElu
dFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVhdGVJbWFn
ZUJ1ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRoaXMgb25l
LgotICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAucmVtb3Zl
KGltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBJbWFnZUJ1ZmZlcklkZW50
aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6
SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VC
dWZmZXIgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRl
bnRpZmllcikpIHsKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Z2V0SW1h
Z2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlKFdURk1vdmUoaW1hZ2VEYXRhKSkpOwotICAgIH0KKyAg
ICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcmVhdGVJbWFnZUJ1ZmZlcihsb2dpY2FsU2l6
ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1
ZmZlcklkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hJ
bWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX2ltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJNYXAuZ2V0KGltYWdlQnVmZmVySWRlbnRpZmllcikpCi0gICAgICAg
IGltYWdlQnVmZmVyLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0KTsKKyAgICBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3BsYXlMaXN0LCBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Zmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyIGlt
YWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpm
bHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXJGbHVzaElkZW50
aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIpKQotICAgICAg
ICBpbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwg
Zmx1c2hJZGVudGlmaWVyKTsKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5mbHVzaERy
YXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNvbW1pdElt
YWdlQnVmZmVyRmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllciwgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLUdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpIGNvbnN0Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0
LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKKyAgICBhdXRvIGltYWdlRGF0YSA9IG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3Qs
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJ
bWFnZURhdGFSZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7Cit9CisKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZU5hdGl2ZUltYWdl
KGltYWdlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oCmluZGV4IGEwOTUyYmFmYjNjMTUzMmQ3ZGM5OTAwNmViNDBmMzFiZjkxZDI1M2IuLmFmOTYy
NjJkYzMwN2IzNDdlYjJhZGVmZDAzNzVhNWY0N2IzMjZjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmgKQEAgLTI4LDI0ICsyOCwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgotI2luY2x1
ZGUgIkltYWdlQnVmZmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKLSNpbmNsdWRlICJSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuaCIK
KyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRlICJSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
RmxvYXRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+Ci0jaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiB9
CitjbGFzcyBGbG9hdFNpemU7CitlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OworZW51
bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01OSw4ICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCi0gICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyOyB9CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0OworICAgIGJvb2wgYXBwbHlSZXNvdXJjZUl0ZW0o
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsK
KworICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCisgICAgdm9pZCByZW1vdGVDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
V2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOwpAQCAtNzQsMTQgKzc3LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRv
IGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIp
OwotICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVmZmVySWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lk
IGZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgSW1h
Z2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0
LCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFn
ZURhdGFSZWZlcmVuY2UmJik+JiYpOwotCi0gICAgdXNpbmcgSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlck1hcCA9IEhhc2hNYXA8SW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Pj47Ci0gICAgSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlck1hcCBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXA7CisgICAgdm9p
ZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6
OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9p
ZCBmbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIGZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGdldEltYWdl
RGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29y
ZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOworICAg
IHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07
CiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbgppbmRleCA3OThjOGI0ZWRiNTdmNWFkMDgyYmE4MWMxMDA4YjBkY2RlZmRm
MThhLi5iMzFjYzY3M2U4YTNhOTMzNzg1Y2I2OWUxZjMzODgxZWExYTg0ZTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDExICsyMywx
MiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgQ3JlYXRlSW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpCi0gICAgdm9pZCBSZWxlYXNlSW1hZ2VCdWZmZXIoV2ViS2l0OjpJbWFnZUJ1ZmZl
cklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgIHZvaWQgRmx1c2hJbWFnZUJ1
ZmZlckRyYXdpbmdDb250ZXh0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNw
bGF5TGlzdCwgV2ViS2l0OjpJbWFnZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlm
aWVyKQotICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJbWFn
ZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYktpdDo6SW1hZ2VCdWZm
ZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKLSAgICBHZXRJbWFnZURhdGEoZW51
bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBX
ZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGlt
YWdlQnVmZmVySWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0
YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0
U2l6ZSBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikK
KyAgICB2b2lkIEZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgdm9pZCBGbHVzaEltYWdlQnVm
ZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0IGRpc3BsYXlMaXN0LCBXZWJLaXQ6OkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNo
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcikKKyAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFs
cGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1Jl
Y3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBDYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGltYWdl
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQorICAgIHZvaWQgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYwYWY1OTY5NWM0ZmQ5ODQ4ZWE0ZjJmNzlhODhkZmFhODI2MDg0YWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICA6
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKK3sKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYg
KG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdl
OworCisgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxl
cmF0ZWQpCisgICAgICAgIGltYWdlID0gQWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
OjpjcmVhdGUobG9naWNhbFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHksIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAg
ICBpZiAoIWltYWdlIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5h
Y2NlbGVyYXRlZCkKKyAgICAgICAgaW1hZ2UgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eTo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworCisgICAgaWYgKGltYWdlKSB7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFw
LmFkZChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoaW1hZ2UpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitJbWFnZUJ1
ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpmbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0
IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8gaW1hZ2Ug
PSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
KSkgeworICAgICAgICBpbWFnZS0+Zmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7Cisg
ICAgICAgIHJldHVybiBpbWFnZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0lt
YWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoYXV0byBpbWFnZSA9IGZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QsIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikpIHsKKyAgICAgICAgaW1hZ2UtPmZsdXNoQ29udGV4dCgpOworICAg
ICAgICByZXR1cm4gaW1hZ2U7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQ
dHI8SW1hZ2VEYXRhPiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmdldEltYWdlRGF0YShBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgY29uc3QK
K3sKKyAgICBpZiAoYXV0byBpbWFnZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmdldEltYWdl
RGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2
b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZU5hdGl2ZUltYWdl
SGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZSk7CisgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworYm9vbCBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OmRyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgRGlzcGxheUxp
c3Q6Okl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBh
dXRvJiBkcmF3SXRlbSA9IHN0YXRpY19jYXN0PGNvbnN0IERpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2UmPihpdGVtKTsKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IGRyYXdJ
dGVtLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGltYWdlID0gbV9y
ZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoaW1hZ2UsIGRyYXdJdGVtLmltYWdlU2l6ZSgpLCBkcmF3SXRlbS5kZXN0aW5h
dGlvblJlY3QoKSwgZHJhd0l0ZW0uc291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3SW1h
Z2VCdWZmZXJJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0Cit7CisgICAgYXV0byYgZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxj
b25zdCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyJj4oaXRlbSk7CisgICAgYXV0byByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgPSBkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KTsKKyAgICBpZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYXV0byBpbWFnZSA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldChy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGltYWdlLT5kcmF3KGNvbnRleHQsIGRyYXdJdGVtLmRlc3RpbmF0aW9u
UmVjdCgpLCBkcmF3SXRlbS5zb3VyY2UoKSwgZHJhd0l0ZW0ub3B0aW9ucygpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3Vy
Y2VJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0Cit7CisgICAgaWYgKGl0ZW0udHlwZSgpID09IERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0ltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gZHJhd0ltYWdlQnVmZmVySXRl
bShpdGVtLCBjb250ZXh0KTsKKyAgICBpZiAoaXRlbS50eXBlKCkgPT0gRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBkcmF3TmF0aXZlSW1hZ2VJ
dGVtKGl0ZW0sIGNvbnRleHQpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmIChtX3JlbW90ZUlt
YWdlQnVmZmVySGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmIChtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcC5yZW1vdmUocmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworICAgIC8vIENhY2hpbmcg
dGhlIHJlbW90ZSByZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5n
IGl0LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yM2U0MjJjOGFhZGNhNjUwM2QwZDY4M2YxMDRlZTNlYzZjYmViM2Q4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRpZmll
ci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBEaXNwbGF5TGlzdDsKK2NsYXNzIEl0ZW07Cit9
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk7CisKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7CitwdWJsaWM6CisgICAg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOwor
CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7
CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogZmx1c2hEcmF3aW5nQ29udGV4
dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJD
b3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKSBjb25zdDsKKworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShj
b25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CisKKyAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisKKyAg
ICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworCitwcml2YXRlOgorICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCA9
IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKKyAgICB1c2luZyBSZW1vdGVOYXRpdmVJbWFnZUhh
c2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHI+OworCisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXJJdGVtKGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Q7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisKKyAgICBS
ZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXA7CisgICAg
UmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwOworICAg
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVf
UFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDQwMTdhMmE4ZjIyY2VjZWNjMjE1MWEzMGEzMjc4
ZmY5MDZlYWYzMmEuLjY3NDhkMWY1ZDgwMGQ5NTc0ZjIzODA3NWIxODkwYjRlNGFjZWU5MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NF
VFdSSVRFUkRFTEVHQVRFKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3Rv
cmFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAppbmRleCA5NzdmOTNmZjVjM2MyYjgxNzg0NmM5YTlhNzU1
MTc4OWM4ZWZlMDVjLi42MWI4OTBkYzc4NjdjMzNiMDA1ZjIyZTkzYmIxYWY0N2RkZDNiMTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiR1BVUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJl
bW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCBmYWNkMmY3YWZiNWEzOTJlZTIwOTY3YTc2ZmQ0MWUxNGRmYjE1
MGI5Li4xNThjNGVmOTdjMmU5OWI4NzY2NzkzNmViNDBhNWUxODc4ZDE4YjNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxNywxMSArMjE3LDEzIEBAIGRl
ZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJD
b3JlOjpQbGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVNl
c3Npb25JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJywKICAg
ICAgICAgJ1dlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdp
bkxvYWRDbGllbnRQb2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAg
ICAgJ1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpSZW5kZXJpbmdNb2RlJywKICAgICAg
ICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyJywKQEAgLTI0MCw3ICsyNDIsNiBAQCBkZWYgdHlw
ZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0OjpH
ZW9sb2NhdGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUnLAogICAgICAgICAnV2ViS2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllcics
Ci0gICAgICAgICdXZWJLaXQ6OkltYWdlQnVmZmVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCcsCiAgICAgICAgICdXZWJLaXQ6OkxlZ2FjeUN1c3Rv
bVByb3RvY29sSUQnLAogICAgICAgICAnV2ViS2l0OjpMaWJXZWJSVENSZXNvbHZlcklkZW50aWZp
ZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggZTBiYmJiYzViYTIzMThiZmE4ZTYzMTk2ZDU0ZWViYjg5MDM2NDQ0MS4uYTA3NzUzMDk1
N2JhOGQ0N2Q1NDI5YmFkZDY2NzU3NTU0ZDA2MjExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW1h
Z2VIYW5kbGUmIGltYWdlSGFuZAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBl
bmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBOYXRpdmVJbWFnZVB0ciBpbWFnZSkK
K3N0YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKICAgICBhdXRvIGltYWdlU2l6ZSA9IG5hdGl2ZUltYWdl
U2l6ZShpbWFnZSk7CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CkBAIC0xMTQzLDcgKzExNDMsNyBAQCBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlTmF0aXZlSW1hZ2UoRGVjb2RlciYgZGVjb2Rlciwg
TmF0aXZlSW1hZ2VQdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVP
cHRpb25hbE5hdGl2ZUltYWdlKEVuY29kZXImIGVuY29kZXIsIE5hdGl2ZUltYWdlUHRyIGltYWdl
KQorc3RhdGljIHZvaWQgZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiB7CiAgICAgYm9vbCBoYXNJbWFnZSA9ICEh
aW1hZ2U7CiAgICAgZW5jb2RlciA8PCBoYXNJbWFnZTsKQEAgLTExNjYsMTQgKzExNjYsMTQgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2Uo
RGVjb2RlciYgZGVjb2RlciwgTmF0aXYKICAgICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVj
b2RlciwgaW1hZ2UpOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VIYW5kbGU+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VIYW5kbGUmIGltYWdl
SGFuZGxlKQordm9pZCBBcmd1bWVudENvZGVyPE5hdGl2ZUltYWdlUHRyPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKIHsKLSAgICBlbmNvZGVP
cHRpb25hbE5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlSGFuZGxlLmltYWdlLmdldCgpKTsKKyAg
ICBlbmNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKIH0KIAotYm9vbCBB
cmd1bWVudENvZGVyPE5hdGl2ZUltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IE5hdGl2ZUltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxOYXRp
dmVJbWFnZVB0cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UpCiB7Ci0gICAgcmV0dXJuIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1h
Z2VIYW5kbGUuaW1hZ2UpOworICAgIHJldHVybiBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRl
Y29kZXIsIGltYWdlKTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mIGZvbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDA1ZDAzNTU0
YjllY2E5YTA0MWMzNjhlZjQ1Mzg4MjQ0MzRjZTZlMjMuLjlmM2IxMDY2OTMzM2JhMzAxNTI5Nzgz
YzllMWU5MWVhYmE0Y2FiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVk
REIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlUHRy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRp
bWVNZWRpYVNvdXJjZS5oPgpAQCAtMTA1LDcgKzEwNiw2IEBAIGNsYXNzIEtleWZyYW1lVmFsdWVM
aXN0OwogY2xhc3MgTGF5b3V0U2l6ZTsKIGNsYXNzIExheW91dFBvaW50OwogY2xhc3MgTGluZWFy
VGltaW5nRnVuY3Rpb247Ci1jbGFzcyBOYXRpdmVJbWFnZUhhbmRsZTsKIGNsYXNzIE5vdGlmaWNh
dGlvbjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjsKQEAgLTQxNiw5ICs0MTYsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7CiAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsK
IH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TmF0aXZlSW1h
Z2VIYW5kbGU+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6Ok5hdGl2ZUltYWdlSGFuZGxlJik7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYW5kbGUmKTsKK3RlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHI+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdl
UHRyJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVy
JiwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggNzMwZGE2NDhmMmIyZmU5ZTc4
NGZkMDQwNTJlMTkwZjBkMGJmMjFhZC4uOTU5ZGE4M2Q1ZjY5ODhiMjExNTg4ZGE3ZGRiNGZmMTgz
ZGNlN2Q2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENH
LmNwcApAQCAtMTA2LDEyICsxMDYsMjcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4
dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogCiB2b2lkIFNoYXJl
YWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKIHsKLSAgICBk
cmF3TmF0aXZlSW1hZ2UobWFrZUNHSW1hZ2VDb3B5KCksIGNvbnRleHQsIDEsIGRlc3RpbmF0aW9u
LCBzb3VyY2UpOworICAgIHBhaW50KGNvbnRleHQsIDEsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwog
fQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCiB7Ci0gICAgZHJhd05hdGl2ZUltYWdlKG1ha2VDR0lt
YWdlQ29weSgpLCBjb250ZXh0LCBzY2FsZUZhY3RvciwgZGVzdGluYXRpb24sIHNvdXJjZSk7Cisg
ICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgQ0dDb250ZXh0Q2xpcFRv
UmVjdChjZ0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRpb24ueCgpLCBkZXN0aW5hdGlvbi55
KCksIHNvdXJjZS53aWR0aCgpLCBzb3VyY2UuaGVpZ2h0KCkpKTsKKyAgICBDR0NvbnRleHRTY2Fs
ZUNUTShjZ0NvbnRleHQsIDEsIC0xKTsKKworICAgIGF1dG8gaW1hZ2UgPSBtYWtlQ0dJbWFnZUNv
cHkoKTsKKyAgICBDR0Zsb2F0IGltYWdlSGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZS5n
ZXQoKSkgLyBzY2FsZUZhY3RvcjsKKyAgICBDR0Zsb2F0IGltYWdlV2lkdGggPSBDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UuZ2V0KCkpIC8gc2NhbGVGYWN0b3I7CisKKyAgICBDR0Zsb2F0IGRlc3RYID0g
ZGVzdGluYXRpb24ueCgpIC0gc291cmNlLngoKTsKKyAgICBDR0Zsb2F0IGRlc3RZID0gLWltYWdl
SGVpZ2h0IC0gZGVzdGluYXRpb24ueSgpICsgc291cmNlLnkoKTsKKworICAgIENHQ29udGV4dERy
YXdJbWFnZShjZ0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdFgsIGRlc3RZLCBpbWFnZVdpZHRoLCBp
bWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKKworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUo
Y2dDb250ZXh0KTsKIH0KIAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6
bWFrZUNHSW1hZ2VDb3B5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRhZjVmYjczMTNiZGQ5ODA2OGRlZGQz
OWNiYWM0ZGZiZTkzNzdjYTguLjhlM2IyYWZmY2EwMDM0YjMyNmRhOWIyMTk4Yzg1Nzk3NGUwNDkx
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dApAQCAtMjQsOCArMjQsOCBAQAogR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
LmNwcAogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAogR1BVUHJvY2Vz
cy9HUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAotR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwCiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKK0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uUHJv
eHlNYW5hZ2VyLmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3Bw
CkBAIC01NTIsOCArNTUyLDggQEAgV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcAotV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlci5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCitXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3Bw
CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ODQzNGNi
YWMwYzJmNjFhMmQ2ZTI4MDcxNmVjZDcyODgyODg5MjgyLi4yYThjNDJhNWFiZTQxNWJmOWQxMWM3
YjBiM2VmNzE4ODAyYjIwYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTM4ODksNyArMzg4OSw2IEBACiAJCTU1MDY0MEEyMjQwNzFB
NjEwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwNjQwQTQyNDA3MUMyMTAwQUFF
MDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1MDY0MEE1MjQwNzFDQzAwMEFBRTA0NSAvKiBJ
bWFnZUJ1ZmZlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJJZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1QUQwOTQyMjQwOEEwMkUwMERF
NEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRDA5NDMy
NDA4QTBFNjAwREU0RDJGIC8qIFBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTVBRDA5NDQyNDA4QUJCMzAwREU0RDJGIC8qIEltYWdlQnVmZmVy
Rmx1c2hJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyRmx1c2hJZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc4LDEwICs0MTc3LDcgQEAK
IAkJNzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2du
aXplci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hB
Y3Rpb25HZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVy
ZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRkI4MTBBMjI2
MDYyN0EwMDMyMzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGlj
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlU2ltdWxhdGVkTW91
c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjI3ODAwQjI0MDhCRDdEMDA3RDM3NkIgLyogUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTcyMjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjI3
ODAwRDI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDExMjQwOTkwNkUwMDdEMzc2QiAvKiBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMTIyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3
QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFj
a2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjdBN0YzNTI0MDc4NTdGMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1
cmZhY2VCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjdBN0YzNjI0MDc4OEYwMDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDE5MSw2ICs0MTg3LDEwIEBACiAJCTcyN0E3RjQ5MjQwOEFFRTYwMDREMjkzMSAvKiBSZW1vdGVJ
bWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29s
b3JQaWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQ
aWNrZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4
QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcyOUQwNTMyMjUzMTRGRUYwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1MzMyNTMxNEZFRjAwNDIy
MDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5RDA1
MzUyNTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyOUQwNTM2MjUzMTczQ0MwMDQyMjA5OCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9y
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnNpdGVEYXRhU3RvcmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5QzlF
IC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzVBOEQyRDQxODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZUludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9y
ZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDc2LDE3ICs4MDc2
LDE3IEBACiAJCQkJNzI3QTdGMzMyNDA3ODUyNzAwNEQyOTMxIC8qIGNvY29hICovLAogCQkJCTcy
N0E3RjM5MjQwNzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywK
IAkJCQk1NUFEMDk0NDI0MDhBQkIzMDBERTREMkYgLyogSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZp
ZXIuaCAqLywKLQkJCQk1NTA2NDBBNTI0MDcxQ0MwMDBBQUUwNDUgLyogSW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLmggKi8sCiAJCQkJNzI3QTdGMzcyNDA3ODhGMDAwNEQyOTMxIC8qIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgKi8sCiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQy
OTMxIC8qIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3
RjM4MjQwNzg4RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2Vu
ZC5oICovLAogCQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUlt
YWdlQnVmZmVyLmggKi8sCiAJCQkJNzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUlt
YWdlQnVmZmVyLmggKi8sCi0JCQkJNzIyNzgwMEMyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwICovLAogCQkJCTcyMjc4MDBEMjQwOTdBMDIwMDdE
Mzc2QiAvKiBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmggKi8sCiAJCQkJNTUwNjQw
OUQyNDA3MTYwOTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwICovLAogCQkJ
CTU1MDY0MDlFMjQwNzE2MDkwMEFBRTA0NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggKi8s
CiAJCQkJNTUwNjQwQTAyNDA3MTlFMTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
bWVzc2FnZXMuaW4gKi8sCisJCQkJNzI5RDA1MzUyNTMxNzNDQzAwNDIyMDk4IC8qIFJlbW90ZVJl
c291cmNlQ2FjaGUuY3BwICovLAorCQkJCTcyOUQwNTM2MjUzMTczQ0MwMDQyMjA5OCAvKiBSZW1v
dGVSZXNvdXJjZUNhY2hlLmggKi8sCiAJCQkJNTUwNjQwOUYyNDA3MTk2QTAwQUFFMDQ1IC8qIFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNz
OwpAQCAtODA5NiwxMiArODA5NiwxMiBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQk1NUFEMDk0MzI0MDhBMEU2MDBERTREMkYgLyogUGxhdGZvcm1SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmggKi8sCi0JCQkJNzIyNzgwMTEyNDA5OTA2RTAwN0QzNzZCIC8qIFJlbW90
ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAgKi8sCi0JCQkJNzIyNzgwMTIyNDA5
OTA2RTAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICov
LAogCQkJCTU1QUQwOTQyMjQwOEEwMkUwMERFNEQyRiAvKiBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmggKi8sCiAJCQkJNTUwNjQwQTIyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAgKi8sCiAJCQkJNTUwNjQwQTMyNDA3MUE2MTAwQUFFMDQ1IC8qIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oICovLAogCQkJCTU1MDY0MEE0MjQwNzFDMjEwMEFBRTA0
NSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJNzI5
RDA1MzIyNTMxNEZFRjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgKi8s
CisJCQkJNzI5RDA1MzMyNTMxNEZFRjAwNDIyMDk4IC8qIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBncmFwaGljczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVySWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlcklkZW50aWZpZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOWExYmM5YWU4N2RjOGQ3MjQyOGEwYjgwOWNhZDBkODBhNGNkMWNiOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVySWRlbnRpZmllci5oCisrKyAvZGV2L251bGwK
QEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWVudW0gSW1hZ2VCdWZmZXJJZGVudGlmaWVyVHlwZSB7IH07Ci11
c2luZyBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdlQnVmZmVy
SWRlbnRpZmllclR5cGU+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRleCBlODQ5MTY2NDUxNDU5NjI4
N2VmMmM3OGY5MDc2ZTFkNDM4MjE5MWYyLi5lODUxZGQwMzhiNzdjYmQ1ZTA1MjdkZjFhMTAyNjg3
NjkxMzM5MDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQmFja2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJsaWMgUmVtb3Rl
SW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1
YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+LCBwdWJs
aWMgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlciwgcHVibGljIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGUgewogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdElt
YWdlQnVmZmVyID0gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBl
PjsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6bV9iYWNrZW5kOwogICAg
IHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjptX2RyYXdpbmdDb250ZXh0OwpAQCAt
NTMsMTQgKzUzLDIwIEBAIHB1YmxpYzoKIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCiAgICAg
eworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQtPnJlbGVhc2VJbWFnZUJ1ZmZlcigqdGhpcyk7CiAgICAgfQogCisgICAg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOyB9CisKIHByb3Rl
Y3RlZDoKICAgICBSZW1vdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNp
emUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgICAgIDogQmFzZURpc3BsYXlMaXN0
SW1hZ2VCdWZmZXIoc2l6ZSkKLSAgICAgICAgLCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5k
bGVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcmVt
b3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgOiBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
cihzaXplLCB0aGlzKQorICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChtYWtlV2Vh
a1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKICAgICB7CisgICAgICAgIG1fcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW1vdGVDcmVhdGVJ
bWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UpOwogICAgIH0KIAogICAgIHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlIGNvbG9yU3BhY2UsIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBoYW5kbGUpIG92ZXJyaWRlCkBAIC02OSwyMiArNzUsNTAg
QEAgcHJvdGVjdGVkOgogICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKGxv
Z2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZN
b3ZlKGhhbmRsZSkpOwogICAgIH0KICAgICAKLSAgICBib29sIGlzQmFja2VuZENyZWF0ZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KLQogICAgIEJhY2tlbmRU
eXBlKiBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAg
ICBpZiAoIW1fYmFja2VuZCkKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZm
ZXImPigqdGhpcykuUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6d2FpdEZvckNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZCgpOworICAgICAgICBpZiAoIW1fYmFja2VuZCAmJiBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQt
PndhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFj
a2VuZC5nZXQoKTsKICAgICB9CiAKKyAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fYmFja2VuZC0+
Zmx1c2hDb250ZXh0KCk7CisgICAgfQorCisgICAgdm9pZCBmbHVzaERyYXdpbmdDb250ZXh0KCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0ID0gbV9kcmF3aW5nQ29u
dGV4dC5kaXNwbGF5TGlzdCgpOworICAgICAgICBpZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgp
IHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+cmVt
b3RlRmx1c2hEcmF3aW5nQ29udGV4dEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9yZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRG
b3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQtPnJlbGVhc2VSZW1vdGVDbGllbnQobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgZmx1
c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5p
dGVtQ291bnQoKSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnJlbW90ZUZsdXNoRHJhd2lu
Z0NvbnRleHQoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9
CisgICAgCiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNv
cmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzcmNSZWN0KSBjb25zdCBvdmVycmlkZQogICAgIHsKKyAgICAgICAgaWYgKCFtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAg
ICAgICBhdXRvJiBkaXNwbGF5TGlzdCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0
aGlzKS0+bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBjb25zdF9jYXN0
PFJlbW90ZUltYWdlQnVmZmVyKj4odGhpcyktPlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXI6OmZsdXNoRHJhd2luZ0NvbnRleHQoZGlzcGxheUxpc3QpOwotICAgICAgICBhdXRvIHJlc3Vs
dCA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXIqPih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZm
ZXJNZXNzYWdlSGFuZGxlcjo6Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7Cisg
ICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkgeworICAgICAgICAgICAgY29uc3Rf
Y2FzdDxSZW1vdGVJbWFnZUJ1ZmZlcio+KHRoaXMpLT5mbHVzaERyYXdpbmdDb250ZXh0KGRpc3Bs
YXlMaXN0KTsKKyAgICAgICAgICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CisgICAgICAgIH0KKwog
ICAgICAgICAvLyBnZXRJbWFnZURhdGEgaXMgc3luY2hyb25vdXMsIHdoaWNoIG1lYW5zIHdlJ3Zl
IGFscmVhZHkgcmVjZWl2ZWQgdGhlIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0IG1lc3Nh
Z2UuCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQtPnJlbW90ZUdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1f
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKICAgICB2b2lkIHB1dEltYWdlRGF0
YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJD
b3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSwgV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3ZlcnJpZGUKQEAgLTk1LDI2ICsxMjksMzIgQEAgcHJv
dGVjdGVkOgogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LnJlY29yZGVyKCkucHV0SW1hZ2VEYXRh
KGlucHV0Rm9ybWF0LCBpbWFnZURhdGEsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7
CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaENvbnRleHQoKSBvdmVycmlkZQorICAgIFJlZlB0cjxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJD
b3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBmbHVz
aERyYXdpbmdDb250ZXh0KCk7Ci0gICAgICAgIG1fYmFja2VuZC0+Zmx1c2hDb250ZXh0KCk7Cisg
ICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmNyZWF0
ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBt
X3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgdm9pZCBmbHVzaERyYXdp
bmdDb250ZXh0KCkgb3ZlcnJpZGUKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW0+IGNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgYXV0
byYgZGlzcGxheUxpc3QgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAg
IGlmIChkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJhd2luZ0NvbnRleHRBbmRXYWl0Q29tbWl0KGRpc3Bs
YXlMaXN0KTsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC0+Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdCwgb3B0aW9ucywgY2FjaGVkSW1hZ2UsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNvbnN0ZXhw
ciBzaXplX3QgRGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7CiAgICAgICAgIGF1dG8mIGRpc3Bs
YXlMaXN0ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBpZiAoZGlz
cGxheUxpc3QuaXRlbUNvdW50KCkgPj0gRGlzcGxheUxpc3RCYXRjaFNpemUpCi0gICAgICAgICAg
ICBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjpmbHVzaERyYXdpbmdDb250ZXh0KGRp
c3BsYXlMaXN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIDwgRGlzcGxh
eUxpc3RCYXRjaFNpemUgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCk7CisgICAg
ICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7CiAgICAgfQorCisgICAgV2Vha1B0cjxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcxNTBjN2IwNzkz
YWZlOWFjNWM4M2E5YWM3NDZiYTMxOGU1MWI4Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
OTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyLmgiCi0KLSNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCi0KLSNpbmNsdWRlICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
TWVzc2FnZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlcjo6UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcihjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQobWFrZVdlYWtQdHIocmVtb3RlUmVuZGVyaW5nQmFja2VuZCkpCi17Ci0gICAgLy8gQ3JlYXRl
IHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC0+c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpDcmVhdGVJbWFn
ZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlcjo6flJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoKQotewotICAgIC8vIFJl
bGVhc2UgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCi0gICAgaWYgKCFtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVsZWFzZUlt
YWdlQnVmZmVyKG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLX0KLQotUmVmUHRyPEltYWdlRGF0
YT4gUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25z
dAotewotICAgIElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKLSAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1f
aW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6R2V0SW1hZ2VEYXRhOjpSZXBseShpbWFnZURhdGFSZWZlcmVuY2UpLCBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQtPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcyk7Ci0gICAg
cmV0dXJuIGltYWdlRGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyOjp3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKCkK
LXsKLSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kICYmICFpc0JhY2tlbmRDcmVhdGVk
KCkpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+d2FpdEZvckNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXI6OndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpCi17Ci0gICAgaWYgKG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZCAmJiBpc1BlbmRpbmdGbHVzaCgpKQotICAgICAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQtPndhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4
dCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNoRHJh
d2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlz
dCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+c2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHQo
ZGlzcGxheUxpc3QsIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5j
bGVhcigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmZsdXNo
RHJhd2luZ0NvbnRleHRBbmRXYWl0Q29tbWl0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QpCi17Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBJbWFnZUJ1ZmZl
ckZsdXNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Rmx1c2hJbWFn
ZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0KGRpc3BsYXlMaXN0LCBtX3NlbnRGbHVzaElk
ZW50aWZpZXIsIG1faW1hZ2VCdWZmZXJJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5jbGVh
cigpOwotICAgIHdhaXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOwotfQotCi12
b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXI6OmNvbW1pdEZsdXNoQ29udGV4dChJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIpCi17Ci0gICAgbV9yZWNl
aXZlZEZsdXNoSWRlbnRpZmllciA9IGZsdXNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCmluZGV4IDYyMDQxOGQ3OGMyN2YyOGM1NzQ5
MDJjMmUxYmE5YTIzNzE3NTE3YjkuLjYxZGQ1OGNlNTJmZGNlZDRmMTg0YWYwZWE2Nzk3YjI2NjI3
NWEyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlci5oCkBA
IC0yOSw1MCArMjksMzEgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1h
Z2VCdWZmZXJJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRT
aXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgRmxvYXRTaXplOwogY2xhc3MgSW1hZ2VEYXRhOwogZW51bSBjbGFzcyBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIDogdWludDhfdDsKK2VudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OwotCiBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyIHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCk7Ci0KLSAgICBJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7IH0KLQogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2Vp
dmVkLiBTZWUgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbi4KICAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlQmFja2VuZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUpID0gMDsK
IAotICAgIHZvaWQgY29tbWl0Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVy
KTsKLQotcHJvdGVjdGVkOgotICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Jik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKICAg
ICBib29sIGlzUGVuZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlm
aWVyICE9IG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0KIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0K
LSAgICB2b2lkIHdhaXRGb3JDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKLSAgICB2b2lkIHdh
aXRGb3JDb21taXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpOworICAgIHZvaWQgY29tbWl0Rmx1
c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllcikKKyAg
ICB7CisgICAgICAgIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7
CisgICAgfQogCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4gU2VlIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbi4KLSAgICB2b2lkIGZsdXNoRHJhd2luZ0NvbnRleHQo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0gICAgdm9pZCBmbHVzaERyYXdp
bmdDb250ZXh0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
KTsKLQotcHJpdmF0ZToKLSAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZDsKLSAgICBJbWFnZUJ1ZmZlcklkZW50aWZpZXIgbV9pbWFnZUJ1
ZmZlcklkZW50aWZpZXIgeyBJbWFnZUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK3By
b3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyKCkg
PSBkZWZhdWx0OwogCiAgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgbV9zZW50Rmx1c2hJ
ZGVudGlmaWVyOwogICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVz
aElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA5OTUzNDE3
ODdlZGEyMGE1NTRlNGQ2N2JhNTNkYzY5OGE1MzcwY2MwLi4wNjU3ODE0MmM2YWUyMTUxOGYzMDJm
YmRjMDRlNWVmMTk5OGE0NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAg
LTg4LDM4ICs4OCw3NSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OndhaXRGb3JDb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBTaG91bGRBY2NlbGVyYXRlIHNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIGlmIChzaG91bGRBY2Nl
bGVyYXRlID09IFNob3VsZEFjY2VsZXJhdGU6OlllcykgewotICAgICAgICBpZiAoYXV0byBpbWFn
ZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5k
ZXJpbmdNb2RlOjpSZW1vdGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNl
LCAqdGhpcykpIHsKLSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5h
ZGQoaW1hZ2VCdWZmZXItPmltYWdlQnVmZmVySWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KLSAgICB9Cisg
ICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBz
aG91bGRBY2NlbGVyYXRlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOworfQogCi0gICAg
aWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpSZW1vdGVVbmFjY2VsZXJhdGVkLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsICp0aGlzKSkgewotICAgICAgICBtX2ltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJNYXAuYWRkKGltYWdlQnVmZmVyLT5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSwgaW1h
Z2VCdWZmZXIuZ2V0KCkpOwotICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgfQordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
IGltYWdlKQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlSW1hZ2VCdWZmZXIo
aW1hZ2UpOworfQogCi0gICAgcmV0dXJuIG51bGxwdHI7CitSZWZQdHI8RGlzcGxheUxpc3Q6Okl0
ZW0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oSW1h
Z2VCdWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oaW1hZ2UsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKwor
UmVmUHRyPERpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVE
cmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hl
ZEltYWdlJiBjYWNoZWRJbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVu
dElkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jcmVhdGVE
cmF3TmF0aXZlSW1hZ2VJdGVtKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zLCBjYWNoZWRJbWFnZSwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZUNsaWVudChSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBtX3JlbW90ZVJlc291
cmNlQ2FjaGUucmVsZWFzZVJlbW90ZUNsaWVudChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30K
KworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90
ZUNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKK3sKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyID0gUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q3JlYXRlSW1hZ2VCdWZmZXIoc2l6
ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKKyAgICByZXR1
cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCitSZWZQdHI8SW1hZ2VEYXRhPiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpyZW1vdGVHZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UgaW1hZ2VEYXRhUmVmZXJlbmNlOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNy
Y1JlY3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OkdldEltYWdlRGF0YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgMV9zKTsKKyAgICByZXR1cm4gaW1hZ2VEYXRh
UmVmZXJlbmNlLmJ1ZmZlcigpOworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJl
bW90ZUZsdXNoRHJhd2luZ0NvbnRleHQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OkZsdXNoSW1hZ2VCdWZmZXJEcmF3aW5nQ29udGV4dChkaXNwbGF5TGlzdCwgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKK0ltYWdl
QnVmZmVyRmx1c2hJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZUZsdXNo
RHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBk
aXNwbGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKK3sKKyAgICBJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBzZW50Rmx1c2hJZGVudGlm
aWVyID0gSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpGbHVzaEltYWdlQnVmZmVyRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoZGlzcGxheUxpc3QsIHNlbnRGbHVzaElkZW50aWZpZXIsIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwor
ICAgIHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOworfQorCitSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVtb3RlQ2FjaGVOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IFJlbW90ZVJlc291cmNlSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OkNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXI7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZUltYWdlQnVm
ZmVyKEltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90ZVJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIC8vIENy
ZWF0ZUltYWdlQnVmZmVyIG1lc3NhZ2Ugc2hvdWxkIGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUg
dGhpcyBvbmUuCi0gICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1h
cC5yZW1vdmUoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGZvdW5k
LCBmb3VuZCk7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgSW1hZ2VC
dWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRs
ZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsK
LSAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1h
cC5nZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKSkKLSAgICAgICAgaW1hZ2VCdWZmZXItPmNyZWF0
ZUJhY2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIFdURk1vdmUoaGFuZGxlKSk7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNyZWF0
ZUltYWdlQnVmZmVyQmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgV1RGTW92ZShoYW5kbGUpLCByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNvbW1pdEltYWdlQnVmZmVy
Rmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwg
SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllcikKK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Y29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZm
ZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVy
ID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdldChpbWFnZUJ1ZmZlcklkZW50aWZp
ZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRp
Zmllcik7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNvbW1pdEltYWdlQnVmZmVyRmx1c2hD
b250ZXh0KGZsdXNoSWRlbnRpZmllciwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGY0
OTYxNThlN2Q0MGVlYjA1YWMzOTQzNGFmMjQ2MzNiYWJjN2YwZWYuLmU5MzMzMGU3NWFjODNjODRj
NGNjOWZhYWEyNzdlMzI4Y2ZjNTY1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBA
IC0yOSwxOCArMjksMjQgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1h
Z2VCdWZmZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3Bh
Y2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLSNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OworY2xhc3MgSXRl
bTsKK30KK2NsYXNzIEZsb2F0U2l6ZTsKK2VudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7
CitlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiB1aW50OF90OworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZApAQCAtNTIsOCArNTgsNiBAQCBw
dWJsaWM6CiAKICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCi0gICAgUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9Ci0KICAgICAvLyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02MSwyMSArNjUsMzIgQEAgcHVibGljOgogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKLSAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlcklkZW50aWZpZXIpOwotCiAgICAgYm9vbCB3YWl0Rm9yQ3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kKCk7CiAgICAgYm9vbCB3YWl0Rm9yQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQo
KTsKKyAgICAgICAgCisgICAgLy8gUmVzb3VjZSBjYWNoZS4KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CisgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW0+IGNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW0+IGNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6TmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYsIFdlYkNvcmU6OkNhY2hl
ZEltYWdlJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJl
bGVhc2VSZW1vdGVDbGllbnQoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKwor
ICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZUNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6Q29sb3JTcGFjZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gcmVtb3RlR2V0
SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3RlRmx1c2hEcmF3aW5nQ29udGV4dChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIHJlbW90ZUZsdXNoRHJh
d2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciYpOworICAgIHZvaWQgcmVtb3RlUmVsZWFzZVJlbW90ZVJlc291
cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2
ZWQuCi0gICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLCBJbWFnZUJ1ZmZlcklkZW50aWZpZXIpOwotICAgIHZvaWQgY29tbWl0SW1h
Z2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIEltYWdlQnVm
ZmVySWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgY29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoSW1hZ2VCdWZmZXJG
bHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKLSAg
ICB1c2luZyBJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwID0gSGFzaE1hcDxJbWFnZUJ1ZmZl
cklkZW50aWZpZXIsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXIqPjsKLSAgICBJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcDsK
KyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZSB7ICp0aGlzIH07
CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMTJhN2Jm
OGRhNGM4MjU3MGJjYTM2YTEzNWZkNzFhZjI1ODhiNjRkNS4uMmMwZjdlOGExMjAzZjI2ODY1MmEw
MGZjMWY3YjE3ZGE1OTlkMmFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5tZXNzYWdlcy5pbgpAQCAtMjMsOCArMjMsOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsKLSAg
ICB2b2lkIENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChXZWJDb3JlOjpGbG9hdFNpemUgbG9naWNh
bFNpemUsIFdlYkNvcmU6OkludFNpemUgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJLaXQ6OkltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBoYW5kbGUsIFdlYktpdDo6SW1hZ2VCdWZmZXJJZGVudGlmaWVyIGltYWdlQnVm
ZmVySWRlbnRpZmllcikKLSAgICB2b2lkIENvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KFdl
YktpdDo6SW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJLaXQ6
OkltYWdlQnVmZmVySWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCisgICAgdm9pZCBD
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBX
ZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNv
cmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgaGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKQorICAgIHZvaWQgQ29tbWl0SW1hZ2VCdWZmZXJGbHVzaENvbnRleHQoV2Vi
S2l0OjpJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42M2Y5NzJjMTBkZDFjYWQyYjcwZDZjMzQxNTVmNzE1ZTg1ODIxYjNjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVy
LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgorI2luY2x1ZGUgIlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRp
bmdzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K1JlbW90ZVJlc291cmNlQ2FjaGU6OlJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgU2hvdWxkQWNjZWxlcmF0ZSBzaG91bGRBY2NlbGVyYXRlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3sKKyAgICBpZiAoc2hv
dWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRBY2NlbGVyYXRlOjpZZXMpIHsKKyAgICAgICAgaWYgKGF1
dG8gaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlQWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICAgICAgbV9yZW1v
dGVJbWFnZUJ1ZmZlckhhc2hNYXAuYWRkKGltYWdlQnVmZmVyLmdldCgpLCBpbWFnZUJ1ZmZlci0+
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgbV9yZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcC5hZGQoaW1hZ2VCdWZmZXItPnJlbW90ZVJlc291cmNl
SWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gaW1h
Z2VCdWZmZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01v
ZGU6OlJlbW90ZVVuYWNjZWxlcmF0ZWQsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICBtX3JlbW90ZUltYWdlQnVmZmVySGFz
aE1hcC5hZGQoaW1hZ2VCdWZmZXIuZ2V0KCksIGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIoKSk7CisgICAgICAgIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhh
c2hNYXAuYWRkKGltYWdlQnVmZmVyLT5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VC
dWZmZXIuZ2V0KCkpOworICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CisgICAgfQorCisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1
ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIGltYWdlQnVmZmVyLT5jcmVhdGVCYWNrZW5k
KGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBX
VEZNb3ZlKGhhbmRsZSkpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNvbW1pdElt
YWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIGZsdXNoSWRl
bnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikKK3sKKyAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNz
YWdlSGFuZGxlckhhc2hNYXAuZ2V0KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCisgICAgICAg
IGltYWdlQnVmZmVyLT5jb21taXRGbHVzaENvbnRleHQoZmx1c2hJZGVudGlmaWVyKTsKK30KKwor
UmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
cmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZSwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywg
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAg
YXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQo
aW1hZ2UsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGbHVzaCB0aGUgRHJh
d2luZ0NvbnRleHQgb2YgdGhlIHNvdXJjZSBJbWFnZUJ1ZmZlciBzbyB0aGlzIEltYWdlQnVmZmVy
IGdldHMgYW4gdXBkYXRlZCBpbWFnZS4KKyAgICBpbWFnZS5mbHVzaERyYXdpbmdDb250ZXh0KCk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6OmNyZWF0
ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsK
K30KKworUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVSZXNvdXJjZUNh
Y2hlOjpjcmVhdGVEcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMsIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgPSBmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoY2FjaGVkSW1hZ2UsIGltYWdlLCByZW1v
dGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlbW90ZVJlc291cmNlSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCitSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZUltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiBpbWFnZSkKK3sKKyAgICAvLyBSZW1vdmUgdGhlIHJlc291cmNlIGZyb20gdGhlIGNhY2hl
LgorICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVJbWFnZUJ1ZmZl
ckhhc2hNYXAudGFrZSgmaW1hZ2UpOworICAgIEFTU0VSVChyZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworCisgICAgLy8gY3JlYXRlSW1hZ2VCdWZmZXIgc2hvdWxkIGhhdmUgYmVlbiByZXR1cm5l
ZCB0aGlzIEltYWdlQnVmZmVyIGJlZm9yZS4KKyAgICBib29sIGZvdW5kID0gbV9yZW1vdGVJbWFn
ZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcC5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CisKKyAgICAvLyBUZWxsIHRo
ZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZSB1bmxlc3MgaXQncyBwZW5kaW5n
IHJlcGxheWluZyBiYWNrLgorICAgIHJlbGVhc2VSZW1vdGVSZXNvdXJjZVBlbmRpbmdSZW1vdmVD
bGllbnRzKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllcjsKK30KKworUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJlc291
cmNlQ2FjaGU6OnJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNvdXJjZSBmcm9tIHRoZSBjYWNoZS4K
KyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3RlTmF0aXZlSW1hZ2VI
YXNoTWFwLnRha2UoaW1hZ2UpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVt
b3ZlIHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAg
ICBpZiAocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZWxlYXNlUmVtb3RlUmVz
b3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRl
bnRpZmllciBSZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kSW1hZ2VCdWZmZXJGb3JDbGllbnQoSW1h
Z2VCdWZmZXImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRl
bnRpZmllcikKK3sKKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IG1fcmVtb3Rl
SW1hZ2VCdWZmZXJIYXNoTWFwLmdldCgmaW1hZ2UpOworICAgIGFkZFJlbW90ZUNsaWVudChyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVy
biByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK1JlbW90ZVJlc291cmNlSWRlbnRpZmll
ciBSZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1
dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAu
ZW5zdXJlKGltYWdlLCBbJl0geworICAgICAgICBjYWNoZWRJbWFnZS5hZGRDbGllbnQoKnRoaXMp
OworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZUNhY2hlTmF0
aXZlSW1hZ2UoaW1hZ2UpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGFkZFJlbW90
ZUNsaWVudChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIp
OworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3Rl
UmVzb3VyY2VDYWNoZTo6YWRkUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVD
bGllbnRJZGVudGlmaWVyKQoreworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBBZGQgdGhlICJyZXNvdXJjZSAtPiBjbGllbnQiIGRl
cGVuZGVuY3kgaW4gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwLgorICAgIGF1dG8mIGNs
aWVudHMgPSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAuZW5zdXJlKHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUNsaWVudHNIYXNoU2V0
KCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgY2xpZW50cy5hZGQocmVtb3RlQ2xp
ZW50SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJl
bW90ZVJlc291cmNlUGVuZGluZ1JlbW92ZUNsaWVudHMoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIW1fcmVtb3RlUmVzb3Vy
Y2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikpOworCisgICAgLy8gSWYgd2UgaGF2ZSByZWNvcmRlZCB0aGUgcmVzb3VyY2UgLT4g
Y2xpZW50IGRlcGVuZGVuY3kgYmVmb3JlIGluIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1h
cCwgbW92ZSB0aGlzCisgICAgLy8gZGVwZW5kZW5jeSB0byBtX3JlbW90ZVJlc291cmNlQ2xpZW50
c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC4gT3RoZXJ3aXNlIHJlbW92ZSB0aGUgcmVzb3VyY2UgZnJv
bSB0aGUgY2FjaGUuCisgICAgaWYgKG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcC5jb250
YWlucyhyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNl
Q2xpZW50c1BlbmRpbmdSZWxlYXNlSGFzaE1hcC5hZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LCBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAudGFrZShyZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1v
dGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwor
VmVjdG9yPFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVt
b3ZlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAmIHJlbW90ZVJlc291
cmNlQ2xpZW50c0hhc2hNYXAsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJ
ZGVudGlmaWVyKQoreworICAgIFZlY3RvcjxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+IHJlbW90
ZVJlc291cmNlQ2xpZW50c1RvQmVSZW1vdmVkOworCisgICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVz
b3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9tIHJlbW90ZVJlc291cmNlQ2xpZW50c0hh
c2hNYXAuCisgICAgZm9yIChhdXRvJiBwYWlyIDogcmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1h
cCkgeworICAgICAgICBwYWlyLnZhbHVlLnJlbW92ZShyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKHBhaXIudmFsdWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVtb3RlUmVz
b3VyY2VDbGllbnRzVG9CZVJlbW92ZWQuYXBwZW5kKHBhaXIua2V5KTsKKyAgICB9CisKKyAgICAv
LyBSZXR1cm4gYSBsaXN0IG9mIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzLgorICAgIHJldHVy
biByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZDsKK30KKwordm9pZCBSZW1vdGVSZXNv
dXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIC8vIFJlbW92ZSBhbGwgdGhlIHJlc291cmNl
IC0+IGNsaWVudCBkZXBlbmRlbmNpZXMgZnJvbSBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hN
YXAuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6IHJlbW92ZVJlbW90
ZUNsaWVudChtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAsIHJlbW90ZUNsaWVudElkZW50
aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAucmVtb3ZlKHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNvdXJj
ZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5k
aW5nUmVsZWFzZUhhc2hNYXAuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciA6IHJlbW92ZVJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291cmNlQ2xpZW50c1BlbmRpbmdSZWxl
YXNlSGFzaE1hcCwgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgLy8gUmVtb3Zl
IHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2VzIGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQ
ZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRzUGVu
ZGluZ1JlbGVhc2VIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisg
ICAgICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgor
ICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVsZWFzZVJlbW90ZVJlc291
cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTE3ODAxMTUxYzZhMWQyNDQzZTM2N2Q2NmE0ODE2NmMzYmYwZTgw
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIK
KyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ2FjaGVkSW1hZ2VDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CitjbGFzcyBJdGVtOworfQorZW51bSBj
bGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKK2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0
OworY2xhc3MgRmxvYXRTaXplOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVt
b3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjsKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ7CisKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVk
SW1hZ2VDbGllbnQgeworcHVibGljOgorICAgIFJlbW90ZVJlc291cmNlQ2FjaGUoUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCYpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3Jl
OjpTaG91bGRBY2NlbGVyYXRlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9y
U3BhY2UpOworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIGNvbW1pdEltYWdlQnVmZmVyRmx1c2hDb250ZXh0KEltYWdlQnVmZmVyRmx1c2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgUmVmUHRy
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKFdl
YkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9ucyYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBjcmVhdGVEcmF3TmF0aXZlSW1hZ2VJ
dGVtKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmLCBXZWJDb3JlOjpDYWNoZWRJbWFnZSYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVs
ZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJik7CisgICAgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0ciYpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZUNsaWVudChXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisKK3ByaXZh
dGU6CisgICAgdXNpbmcgUmVtb3RlQ2xpZW50c0hhc2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJIYXNo
TWFwID0gSGFzaE1hcDxXZWJDb3JlOjpJbWFnZUJ1ZmZlciosIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcj47CisgICAgdXNpbmcgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFz
aE1hcDxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyPjsKKyAgICB1c2luZyBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwID0gSGFzaE1h
cDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZUNsaWVudHNIYXNoU2V0
PjsKKyAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVySGFzaE1hcCA9IEhh
c2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyKj47CisKKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVk
KGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSkgb3ZlcnJpZGUgeyByZWxlYXNl
TmF0aXZlSW1hZ2UoaW1hZ2UpOyB9CisKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgZmluZE5hdGl2ZUltYWdlRm9yQ2xpZW50KFdlYkNvcmU6OkNhY2hlZElt
YWdlJiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisKKyAgICB2b2lkIGFkZFJl
bW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBWZWN0
b3I8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPiByZW1vdmVSZW1vdGVDbGllbnQo
UmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVS
ZXNvdXJjZVBlbmRpbmdSZW1vdmVDbGllbnRzKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CisKKyAgICBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZl
ckhhc2hNYXA7CisgICAgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwIG1fcmVtb3RlTmF0aXZlSW1h
Z2VIYXNoTWFwOworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9yZW1vdGVSZXNv
dXJjZUNsaWVudHNIYXNoTWFwOworICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9y
ZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXA7CisgICAgUmVtb3RlSW1h
Z2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAgbV9yZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVySGFzaE1hcDsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
YW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDFhZTUxNTcyNTM2MWQyMjgyMTkx
NGFlZDBmMjhiYjE2ZTc2MzU4ZmYuLjMwMDUwYWMwN2RjOWFkNWM4M2YzZGUyODMyOTA2YTk4NzQx
MGQzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdh
bWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQv
V2ViR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShHQU1F
UEFEKQogCiAjaW5jbHVkZSAiR2FtZXBhZERhdGEuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiV2ViR2FtZXBhZC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411125</attachid>
            <date>2020-10-12 09:58:56 -0700</date>
            <delta_ts>2020-10-21 20:49:02 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>resource-cache-6.patch</filename>
            <type>text/plain</type>
            <size>54382</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNGQxOWRlZjFjOGMuLjhiM2JlNTJkNjdhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwMiBAQAorMjAyMC0xMC0xMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2FjaGUgdGhlIEJpdG1hcElt
YWdlIGZyYW1lIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2luZyBpdCB3aXRoIGl0
cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE9ubHkgdGhlIGZyYW1lcyBvZiB0aGUgQml0bWFwSW1hZ2Ugd2ls
bCBiZSBjYWNoZWQgaW4gdGhlIEdQVSBzaWRlLiBUaGUKKyAgICAgICAgZnJhbWVzIG9mIEJpdG1h
cEltYWdlIGhhdmUgYSB3ZWxsIGRlZmluZWQgbGlmZSBjeWNsZSBpbiB0aGUgV2ViIFByb2Nlc3Mu
CisgICAgICAgIFRoZSBjb3VudGVycGFydCBmcmFtZXMgaW4gdGhlIEdQVSBQcm9jZXNzIHdpbGwg
aGF2ZSBhIHNpbWlsYXIgbGlmZSBjeWNsZS4KKyAgICAgICAgV2hlbiB0aGUgZnJhbWUgaXMgZHJh
d24gZm9yIHRoZSBmaXJzdCB0aW1lIGl0IHdpbGwgYmUgdHJhbnNmZXJlZCBmcm9tIFdlYgorICAg
ICAgICBQcm9jZXNzIHZpYSBhIFNoYXJlYWJsZUJpdG1hcCB0byB0aGUgR1BVIFByb2Nlc3MgYW5k
IGNhY2hlZCB1bmRlciBhIHVuaXF1ZQorICAgICAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
d2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlY29yZCB0aGUgTmF0aXZlRHJhd0ltYWdlCisgICAgICAg
IGl0ZW0uIFdoZW4gdGhlIEJpdG1hcEltYWdlIGRlY2lkZXMgdG8gZGVzdHJveSBpdHMgZGVjb2Rl
ZCBmcmFtZSwgYSBtZXNzYWdlCisgICAgICAgIHdpbGwgYmUgc2VudCBmcm9tIHRoZSBXZWIgUHJv
Y2VzcyB0byB0aGUgR1BVIFByb2Nlc3MgdG8gcmVtb3ZlIHRoZSBjYWNoZWQKKyAgICAgICAgZnJh
bWUuIEhlcmUgaXMgdGhlIHNlcXVlbmNlIGluIG1vcmUgZGV0YWlsOgorCisgICAgICAgIFRoZSBk
cmF3aW5nIHNlcXVlbmNlIGluIHRoZSBXZWIgUHJvY2VzcyBpcyB0aGUgZm9sbG93aW5nOgorCisg
ICAgICAgIDEpIEJpdG1hcEltYWdlOjpkcmF3KCkgY2FsbHMgSW1hZ2VPYnNlcnZlcjo6ZHJhd05h
dGl2ZUltYWdlKCkuCisgICAgICAgIDIpIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVy
OjpkcmF3TmF0aXZlSW1hZ2UoKSBmaW5kcyB0aGUgYXNzb2NpYXRlZAorICAgICAgICAgICBDYWNo
ZWRJbWFnZSBhbmQgY2FsbHMgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoKS4KKyAg
ICAgICAgMykgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSgpIGNhbGxzIHRoZSBjcmVhdGVEcmF3
TmF0aXZlSW1hZ2VJdGVtKCkgb2YgCisgICAgICAgICAgIGl0cyBkZWxlZ2F0ZSB3aGljaCBpcyBS
ZW1vdGVJbWFnZUJ1ZmZlciBpbiB0aGUgY2FzZSBvZiAyRCBjYW52YXMuCisgICAgICAgIDQpIFJl
bW90ZUltYWdlQnVmZmVyIGNhbGxzIHRoZSBSZW1vdGVSZW5kZXJpbmdCYWNrZWQgd2hpY2ggY2Fs
bHMgaXRzCisgICAgICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNyZWF0ZURyYXdOYXRpdmVJ
bWFnZUl0ZW0oKS4KKyAgICAgICAgNSkgUmVtb3RlUmVzb3VyY2VDYWNoZSBjYWxscyBpdHMgZmlu
ZE5hdGl2ZUltYWdlRm9yQ2xpZW50KCkgd2hpY2ggY2FjaGVzCisgICAgICAgICAgIHRoZSBOYXRp
dmVJbWFnZSBpbiB0aGUgY2FjaGUsIHJlc2lzdGVycyBSZW1vdGVSZXNvdXJjZUNhY2hlIGFzIGEg
Y2xpZW50CisgICAgICAgICAgIG9mIHRoZSBDYWNoZWRJbWFnZSwgYXNrcyB0aGUgR1BVIFByb2Nl
c3MgdG8gY2FjaGUgaXQgYWxzbyBhbmQgcmV0dXJucworICAgICAgICAgICB0aGUgUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyLiBSZW1vdGVSZXNvdXJjZUNhY2hlIHRoZW4gY3JlYXRlcyB0aGUgCisg
ICAgICAgICAgIERyYXdOYXRpdmVJbWFnZSBpdGVtIHdpdGggdGhpcyBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuCisKKyAgICAgICAgVGhlIGRyYXdpbmcgc2VxdWVuY2UgaW4gdGhlIEdQVSBQcm9j
ZXNzIGlzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgMSkgV2hlbiBmbHVzaGluZyB0aGUgRHJh
d2luZ0NvbnRleHQgaGFwcGVucywgdGhlIERpc3BsYXlMaXN0IGl0ZW1zIGFyZQorICAgICAgICAg
ICByZXBsYXllZCBiYWNrLiBEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGx5KCkgY2FsbHMgYXBw
bHkoKSBvZiBpdHMKKyAgICAgICAgICAgZGVsZWdhdGUuCisgICAgICAgIDIpIEluIHRoZSBjYXNl
IG9mIDJEIGNhbnZhcywgdGhlIHJlcGxheWVyIGRlbGVnYXRlIGlzIFJlbW90ZUltYWdlQnVmZmVy
UHJveHkuCisgICAgICAgICAgIEl0cyBhcHBseSgpIHdpbGwgY2FsbCBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtKCkgdGhyb3VnaAorICAgICAgICAgICB0aGUgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LgorICAgICAgICAzKSBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OmRyYXdOYXRpdmVJbWFnZUl0ZW0oKSBzZWFyY2hlcyBmb3IgdGhlIE5hdGl2ZUltYWdl
CisgICAgICAgICAgIHdob3NlIGlkZW50aWZpZXIgaXMgdGhlIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcigpIG9mIHRoZSBEcmF3TmF0aXZlSW1hZ2UuCisgICAgICAgIDQpIE9uY2UgdGhlIE5hdGl2
ZUltYWdlIGlzIGZvdW5kLCBpdCB3aWxsIGJlIGRyYXduIHVzaW5nIHRoZSByZXNldCBvZiB0aGUK
KyAgICAgICAgICAgYXJndW1lbnRzIG9mIERyYXdOYXRpdmVJbWFnZS4KKworICAgICAgICBUaGUg
cmVsZWFzZSBzZXF1ZW5jZSBpbiB0aGUgV2ViIFByb2Nlc3MgaXMgdGhlIGZvbGxvd2luZzoKKwor
ICAgICAgICAxKSBJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhKCkgY2FsbHMgdGhlIElt
YWdlT2JzZXJ2ZXIgd2hlbiBhIGRlY29kZWQKKyAgICAgICAgICAgZnJhbWUgaXMgYWJvdXQgdG8g
YmUgZGVzdHJveWVkLgorICAgICAgICAyKSBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZl
cjo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoKSBmaW5kcworICAgICAgICAgICB0aGUgYXNz
b2NpYXRlZCBDYWNoZWRJbWFnZSBhbmQgY2FsbHMgQ2FjaGVkSW1hZ2U6Om5hdGl2ZUltYWdlV2ls
bEJlRGVzdHJveWVkKCkuCisgICAgICAgIDMpIENhY2hlZEltYWdlIGNhbGxzIGFsbCB0aGUgQ2Fj
aGVkSW1hZ2VDbGllbnRzIHRvIG5vdGlmeSB0aGVtLgorICAgICAgICA0KSBCZWNhdXNlIFJlbW90
ZVJlc291cmNlQ2FjaGUgcmVnaXN0ZXJzIGl0c2VsZiBhcyBhIENhY2hlZEltYWdlQ2xpZW50IG9m
CisgICAgICAgICAgIHRoaXMgQ2FjaGVkSW1hZ2UsIFJlbW90ZVJlc291cmNlQ2FjaGU6Om5hdGl2
ZUltYWdlV2lsbEJlRGVzdHJveWVkKCkKKyAgICAgICAgICAgd2lsbCBiZSBjYWxsZWQuCisgICAg
ICAgIDUpIFRoZSBjYWNoZWQgTmF0aXZlSW1hZ2Ugd2lsbCBiZSByZW1vdmVzIGZyb20gdGhlIGNh
Y2hlIGFuZCBhIG1lc3NhZ2Ugd2lsbAorICAgICAgICAgICBiZSBzZW50IHRvIHRoZSBHUFUgUHJv
Y2VzcyB3aGVuIG5vIHJlbW90ZSBjbGllbnQgaXMgcmVmZXJlbmNpbmcgdGhpcworICAgICAgICAg
ICBOYXRpdmVJbWFnZS4KKworICAgICAgICBUaGUgcmVsZWFzZSBzZXF1ZW5jZSBpbiB0aGUgR1BV
IFByb2Nlc3MgaXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAxKSBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSByZWxlYXNlcyB0aGUgY2FjaGVkCisgICAg
ICAgICAgIE5hdGl2ZUltYWdlIHZpYSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisKKyAg
ICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdl
T2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdl
Q2xpZW50OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVGYWN0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpE
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRp
dmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd05hdGl2ZUltYWdlOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6bmF0aXZlSW1hZ2VQ
dHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFn
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1h
Z2U6OmltYWdlU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d05hdGl2ZUltYWdlOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjcmVhdGVEcmF3
TmF0aXZlSW1hZ2VJdGVtKToKKwogMjAyMC0xMC0xMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2xlYW4gdGhlIERp
c3BsYXlMaXN0IHJlY29yZGluZyBvZiB0aGUgTmF0aXZlSW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKaW5kZXggNDM5YjZhOWQ3ZDgxLi42MmY1OWQ2OTJiN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuY3BwCkBAIC02MDEsMTAgKzYwMSwxNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZykgb3ZlcnJp
ZGUgeyB9CiAKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICB9CisKICAg
ICB2b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UmKSBvdmVycmlkZSB7IH0KIAogICAgIGJvb2wgY2Fu
RGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0
aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNv
ZGluZ1N0YXR1czo6SW52YWxpZCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBuYXRpdmVJbWFnZVdp
bGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgb3ZlcnJp
ZGUgeyB9CisKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRS
ZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoY29uc3QgSW1hZ2UmKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNWNjOTMzODMyNTc0Li44MmQyOTE5YzgzY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDEx
LDYgKzQxMSwxNyBAQCB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkZWNv
ZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmIGltYWdlLCBsbwogICAgICAgICBjYWNoZWRJbWFn
ZS0+ZGVjb2RlZFNpemVDaGFuZ2VkKGltYWdlLCBkZWx0YSk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1h
Z2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYgaW1h
Z2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2
ZUltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKK3sKKyAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdl
cykgeworICAgICAgICBpZiAoJmltYWdlICE9IGNhY2hlZEltYWdlLT5pbWFnZSgpKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBjYWNoZWRJbWFnZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0
aXZlSW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCiB2
b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkaWREcmF3KGNvbnN0IEltYWdl
JiBpbWFnZSkKIHsKICAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykK
QEAgLTQzNCw2ICs0NDUsMTIgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZl
cjo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEkKICAgICAgICAgY2Fj
aGVkSW1hZ2UtPmltYWdlRnJhbWVBdmFpbGFibGUoaW1hZ2UsIGFuaW1hdGluZ1N0YXRlLCBjaGFu
Z2VSZWN0LCBkZWNvZGluZ1N0YXR1cyk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZElt
YWdlT2JzZXJ2ZXI6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdlJiBpbWFn
ZSwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlKQoreworICAgIGZvciAoYXV0byBj
YWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQorICAgICAgICBjYWNoZWRJbWFnZS0+bmF0aXZl
SW1hZ2VXaWxsQmVEZXN0cm95ZWQoaW1hZ2UsIG5hdGl2ZUltYWdlKTsKK30KKwogdm9pZCBDYWNo
ZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYg
aW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiB7CiAgICAgZm9yIChhdXRvIGNhY2hlZEltYWdl
IDogbV9jYWNoZWRJbWFnZXMpCkBAIC02ODksNiArNzA2LDE2IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6
OmltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmIGltYWdlLCBJbWFnZUFuaW1hdGluZ1N0
YXRlIGFuCiAgICAgICAgIG1fY2xpZW50c1dhaXRpbmdGb3JBc3luY0RlY29kaW5nLmNsZWFyKCk7
CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0
IEltYWdlJiBpbWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlKQoreworICAg
IGlmICgmaW1hZ2UgIT0gbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkSW1hZ2VDbGllbnQ+IGNsaWVudFdhbGtlcihtX2NsaWVu
dHMpOworICAgIHdoaWxlIChDYWNoZWRJbWFnZUNsaWVudCogY2xpZW50ID0gY2xpZW50V2Fsa2Vy
Lm5leHQoKSkKKyAgICAgICAgY2xpZW50LT5uYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChuYXRp
dmVJbWFnZSk7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29uc3QgSW1h
Z2UmIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQogewogICAgIGlmICgmaW1hZ2UgIT0gbV9p
bWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggNzJk
NTljMWZmNDg0Li44Njc5ODMyYTRjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oCkBAIC0xNDksMTAgKzE0OSwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgIHZv
aWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKGNvbnN0IEltYWdlJiwgRW5jb2RlZERhdGFTdGF0
dXMpIGZpbmFsOwogICAgICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYs
IGxvbmcgbG9uZyBkZWx0YSkgZmluYWw7CisKKyAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7
CiAgICAgICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpIGZpbmFsOwogCiAgICAgICAgIGJv
b2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJikgZmluYWw7CiAgICAgICAgIHZv
aWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUs
IGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERl
Y29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5hbDsKKyAgICAgICAgdm9pZCBuYXRpdmVJbWFnZVdp
bGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgZmluYWw7
CisKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVj
dCopIGZpbmFsOwogICAgICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IElt
YWdlJikgZmluYWw7CiAKQEAgLTE2NCw2ICsxNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
RHJhdyhjb25zdCBJbWFnZSYpOwogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0
IEltYWdlJik7CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1h
Z2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERl
Y29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOworICAgIHZvaWQgbmF0aXZl
SW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYp
OwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsK
ICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggYmE2
NDQ1YjdlYTdlLi4yMWFhZjA3ZjFiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKKyNpbmNsdWRl
ICJOYXRpdmVJbWFnZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDYgKzQ4
LDggQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB3aGVuIGEgbmV3IGRlY29kZWQgZnJhbWUgZm9y
IGEgbGFyZ2UgaW1hZ2UgaXMgYXZhaWxhYmxlIG9yIHdoZW4gYW4gYW5pbWF0ZWQgaW1hZ2UgaXMg
cmVhZHkgdG8gYWR2YW5jZSB0byB0aGUgbmV4dCBmcmFtZS4KICAgICB2aXJ0dWFsIFZpc2libGVJ
blZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWlsYWJsZShDYWNoZWRJbWFnZSYgaW1hZ2UsIElt
YWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QpIHsgaW1hZ2VDaGFu
Z2VkKCZpbWFnZSwgY2hhbmdlUmVjdCk7IHJldHVybiBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpO
bzsgfQogCisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJikgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2FjaGVk
SW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKENhY2hlZEltYWdlJikgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggNzA0YzQzYTI4
ODc4Li4wYWY2YzNkOGIyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIEJpdG1hcEltYWdl
Ojpub3RTb2xpZENvbG9yKCkKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1zdGF0aWMg
aW5saW5lIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJ
bWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorc3RhdGljIGlubGluZSB2b2lkIGRyYXdO
YXRpdmVJbWFnZShCaXRtYXBJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIFN1YnNhbXBsaW5n
IG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4K
ICAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUobmF0aXZl
SW1hZ2UpOwpAQCAtMjE3LDcgKzIxNywxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSwgR3JhcGhpY3NDbwogICAg
IGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCiAgICAgICAgIGFkanVzdGVkU3Jj
UmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVj
dCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKIAotICAgIGNvbnRleHQuZHJhd05hdGl2ZUlt
YWdlKG5hdGl2ZUltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBvcHRpb25zKTsKKyAgICBpZiAoaW1hZ2UuaW1hZ2VPYnNlcnZlcigpKQorICAgICAg
ICBpbWFnZS5pbWFnZU9ic2VydmVyKCktPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwg
bmF0aXZlSW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIG9wdGlvbnMpOworICAgIGVsc2UKKyAgICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
bmF0aXZlSW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIG9wdGlvbnMpOwogfQogCiBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpA
QCAtMzA4LDkgKzMxMSw5IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgYXV0byBvcmll
bnRhdGlvbiA9IG9wdGlvbnMub3JpZW50YXRpb24oKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0g
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKSB7CiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJh
bWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3Jp
ZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKKyAgICAgICAgZHJhd05hdGl2
ZUltYWdlKCp0aGlzLCBjb250ZXh0LCBpbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUo
c2l6ZShvcmllbnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9uIH0pOwogICAgIH0gZWxz
ZQotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CisgICAgICAgIGRyYXdO
YXRpdmVJbWFnZSgqdGhpcywgY29udGV4dCwgaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRT
aXplKHNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CiAKICAgICBtX2N1cnJlbnRGcmFtZURl
Y29kaW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwogCkBAIC0zOTUsNyArMzk4LDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBCaXRtYXBJbWFnZTo6c3Vi
c2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKEdyYXBoaWNzQ29udGV4dCYgY28KIHsKICNpZiBV
U0UoQ0cpCiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGlu
dG8gUERGIGNvbnRleHRzLgotICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQorICAgIGlmIChjb250ZXh0Lmhhc1Bs
YXRmb3JtQ29udGV4dCgpICYmIENHQ29udGV4dEdldFR5cGUoY29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSkgPT0ga0NHQ29udGV4dFR5cGVQREYpCiAgICAgICAgIHJldHVybiBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0OwogCiAgICAgZmxvYXQgc2NhbGUgPSBzdGQ6Om1pbihmbG9hdCgxKSwgc3Rk
OjptYXgoc2NhbGVGYWN0b3Iud2lkdGgoKSwgc2NhbGVGYWN0b3IuaGVpZ2h0KCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CmluZGV4IGU3MzBiODljYTBjZC4uNzExM2Q3ZjY0ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTczMSwxMyAr
NzMxLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVucy5jbGVhcigpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgbV9pbXBsLT5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMsIGNhY2hlZEltYWdlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwZDFj
YTkyZDYwNDUuLjI1MTlkN2JlYTE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgR2x5
cGhCdWZmZXI7CiAjZW5kaWYKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgQ2FjaGVk
SW1hZ2U7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhZGllbnQ7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHRJbXBsOwpAQCAtMzc5LDcgKzM4MCw3IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5l
V2lkdGgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSwgQ2FjaGVkSW1hZ2UqID0gbnVsbHB0cik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3Qg
RmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAwNDA5MjBhOGNmZGMuLmY0NGQ5ZTU0M2EzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEltcGwuaApAQCAtNzIsOSArNzIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbWFnZURy
YXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OwogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25z
dCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFn
ZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7Ci0jaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJF
Q1QyRCkKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
ID0gMDsKLSNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmLCBDYWNoZWRJbWFnZSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAppbmRleCA4YjA4OWU1OTRjMWEuLmI0ZDcxMGFjNjcz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2
ZXIuaApAQCAtNDUsMTAgKzQ1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKGNvbnN0IEltYWdlJiwgRW5jb2RlZERhdGFTdGF0dXMpIHsgfTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiwgbG9uZyBs
b25nIGRlbHRhKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IEltYWdlJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpID0gMDsKIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRl
LCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBE
ZWNvZGluZ1N0YXR1czo6SW52YWxpZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBuYXRpdmVJbWFn
ZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgPSAw
OworCiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNzc1MDMyMjM5
YTVkLi40NTUxNWM1OWExZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTEzMCw4ICsxMzAsMTAgQEAgdm9pZCBJbWFnZVNvdXJj
ZTo6ZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZy
YW1lKQogICAgIEFTU0VSVChmcmFtZUNvdW50IDw9IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgZnJhbWVDb3VudDsgKytpbmRleCkgewotICAg
ICAgICBpZiAoaW5kZXggPT0gZXhjbHVkZUZyYW1lKQorICAgICAgICBpZiAoaW5kZXggPT0gZXhj
bHVkZUZyYW1lIHx8ICFtX2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBpZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVy
KCkpCisgICAgICAgICAgICBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCktPm5hdGl2ZUltYWdlV2ls
bEJlRGVzdHJveWVkKCptX2ltYWdlLCBtX2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSk7CiAg
ICAgICAgIGRlY29kZWRTaXplICs9IG1fZnJhbWVzW2luZGV4XS5jbGVhckltYWdlKCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCAwNDg2NDI4NTFm
OWQuLmZlOTA0OTUyN2FmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
CkBAIC0yNzksNyArMjc5LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG8KICAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgp
LCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1
bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQor
dm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSopCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCBkMzBiZjg2OWQ3NDYuLjJj
MWM3MDE1NGMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTc1LDcg
Kzc1LDcgQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBDYWNoZWRJ
bWFnZSopIG92ZXJyaWRlOwogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA3
OGM3NWI5ZDVjYTkuLmYxNWM3NzBlMWRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcApAQCAtNzA0LDcgKzcwNCw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3VGlsZWRTY2FsZWRJbWFnZSYgaXRlbSkKICAgICBy
ZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCiAgICAgLCBtX2ltYWdlKGltYWdlKQogICAgICwgbV9p
bWFnZVNpemUoaW1hZ2VTaXplKQpAQCAtNzE4LDcgKzcxOCw4IEBAIERyYXdOYXRpdmVJbWFnZTo6
fkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKIAogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3Jj
UmVjdCwgbV9vcHRpb25zKTsKKyAgICBBU1NFUlQobmF0aXZlSW1hZ2VQdHIoKSk7CisgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2VQdHIoKSwgbV9pbWFnZVNpemUsIG1fZGVz
dGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0
ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAyZTM4ZDc0YTVjOWMuLjNi
NjRkM2JhMzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xNDM1LDI3
ICsxNDM1LDUwIEBAIE9wdGlvbmFsPFJlZjxEcmF3VGlsZWRTY2FsZWRJbWFnZT4+IERyYXdUaWxl
ZFNjYWxlZEltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKIGNsYXNzIERyYXdOYXRpdmVJ
bWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3
TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICB1c2luZyBOYXRpdmVJbWFnZVR5cGUgPSBWYXJpYW50
PE5hdGl2ZUltYWdlUHRyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+OworCisgICAgUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyPihtX2ltYWdlKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVy
biBXVEY6OmdldDxSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+KG1faW1hZ2UpOworICAgIH0KKwor
ICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlUHRyKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxOYXRpdmVJbWFnZVB0cj4obV9pbWFnZSkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PE5hdGl2
ZUltYWdlUHRyPihtX2ltYWdlKTsKKyAgICB9CisjZWxzZQorICAgIHVzaW5nIE5hdGl2ZUltYWdl
VHlwZSA9IE5hdGl2ZUltYWdlUHRyOworCisgICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VQ
dHIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisjZW5kaWYKKyAgICBzdGF0aWMgUmVmPERy
YXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlVHlwZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCk7CiAKKyAgICBGbG9hdFNp
emUgaW1hZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVNpemU7IH0KICAgICBGbG9hdFJl
Y3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRl
c3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAg
SW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsg
fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJh
d05hdGl2ZUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JF
X0VYUE9SVCBEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlVHlwZSYsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9p
bWFnZTsKKyAgICBOYXRpdmVJbWFnZVR5cGUgbV9pbWFnZTsKICAgICBGbG9hdFNpemUgbV9pbWFn
ZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OwogICAgIEZsb2F0UmVjdCBt
X3NyY1JlY3Q7CkBAIC0xNDc1LDcgKzE0OTgsNyBAQCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0
aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VQdHI+IGltYWdlOworICAg
IE9wdGlvbmFsPE5hdGl2ZUltYWdlVHlwZT4gaW1hZ2U7CiAgICAgZGVjb2RlciA+PiBpbWFnZTsK
ICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDkzNThmNmVjNzU5MC4uOTU1NzVk
MGY0MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0x
MzIsOCArMTMyLDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0CiAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkUmVjb3JkOwogfQogCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UpCiB7CisgICAgaWYgKG1fZGVsZWdhdGUgJiYgY2FjaGVkSW1hZ2UpIHsKKyAg
ICAgICAgaWYgKGF1dG8gaXRlbSA9IG1fZGVsZWdhdGUtPmNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0
ZW0oaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsICpjYWNoZWRJ
bWFnZSkpIHsKKyAgICAgICAgICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoc3RhdGljX3Jl
ZmVyZW5jZV9jYXN0PERyYXdpbmdJdGVtPihpdGVtLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBhcHBlbmRJdGVtQW5kVXBkYXRl
RXh0ZW50KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oCmluZGV4IGZlMWI5MDA2MjE0OS4uZTE0MGJlMTFkN2Q2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsKK2Ns
YXNzIENhY2hlZEltYWdlOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNs
YXNzIEdseXBoQnVmZmVyOwpAQCAtNjgsNiArNjksNyBAQCBwdWJsaWM6CiAgICAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgpIHsgfQogICAgICAgICB2aXJ0dWFsIFJlZlB0cjxJ
dGVtPiBjcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgICAgIHZpcnR1YWwgUmVmUHRyPEl0ZW0+IGNyZWF0ZURyYXdO
YXRpdmVJbWFnZUl0ZW0oY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYsIENhY2hlZEltYWdlJikgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgICAgICB2aXJ0dWFs
IHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYpIHsgfTsKICAgICB9OwogCkBAIC0xMDcs
NyArMTA5LDcgQEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiwgQ2FjaGVkSW1hZ2UqKSBvdmVycmlkZTsKICAgICBib29sIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggNGUyNGVlYmFkYjY1
Li43YzE0ZjNlN2VlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NDksNyArNTQ5LDcgQEAgSW1hZ2VEcmF3UmVz
dWx0IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXQKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1h
Z2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGls
ZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAot
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlKikK
IHsKICAgICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24s
IE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewog
ICAgICAgICB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggMzgw
OTNkNDEzNWI0Li4xZDQ5MDEzYzg5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1h
Z2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdl
YkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmLCBXZWJDb3JlOjpDYWNoZWRJbWFn
ZSopIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2M2JhYjdlMjRmMmIuLjI4YzEyMzE5
MDMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMC0xMC0xMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2FjaGUgdGhlIEJpdG1hcEltYWdlIGZyYW1lIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZl
cmVuY2luZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNh
Y2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OmRyYXdOYXRpdmVJbWFnZUl0ZW0gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OmFwcGx5UmVzb3VyY2VJdGVtIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlRHJh
d05hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbW90ZUNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmZpbmROYXRpdmVJbWFnZUZvckNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5o
OgorCiAyMDIwLTEwLTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBDbGVhbiB0aGUgRGlzcGxheUxpc3QgcmVjb3Jk
aW5nIG9mIHRoZSBOYXRpdmVJbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApp
bmRleCBjYTMyNjI0MzIxNzcuLmMxYTMxY2JjOTRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKQEAgLTEwMyw2ICsxMDMsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG8K
ICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0YVJlZmVyZW5jZShXVEZNb3ZlKGlt
YWdlRGF0YSkpKTsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hl
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UsIHJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikKIHsKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5yZWxlYXNlUmVtb3RlUmVz
b3VyY2UocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaAppbmRleCA5ZjY4ZjJiNDczN2UuLmFmOTYyNjJkYzMwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaApAQCAtODEsNiArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hJ
bWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBm
bHVzaEltYWdlQnVmZmVyRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJl
Y3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKKyAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNl
KFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeyAqdGhpcyB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMjZjZjEzNjFm
ZGFiLi5iMzFjYzY3M2U4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMjcsNiArMjcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgdm9pZCBGbHVzaEltYWdlQnVmZmVy
RHJhd2luZ0NvbnRleHQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlM
aXN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQogICAgIHZvaWQgRmx1c2hJbWFnZUJ1ZmZlckRyYXdpbmdDb250ZXh0QW5kQ29tbWl0
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViS2l0OjpJ
bWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgR2V0SW1h
Z2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ2FjaGVOYXRpdmVJbWFn
ZShXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciBpbWFnZSwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKICAgICB2b2lkIFJlbGVhc2VSZW1v
dGVSZXNvdXJjZShXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IDllOWI4
NGM2NzBlOS4uNjBhZjU5Njk1YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAt
ODYsMTAgKzg2LDM1IEBAIFJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24KICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVO
YXRpdmVJbWFnZUhhc2hNYXAuYWRkKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgaW1hZ2UpOwor
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisK
K2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpkcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0
IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
Cit7CisgICAgYXV0byYgZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBEaXNwbGF5TGlzdDo6
RHJhd05hdGl2ZUltYWdlJj4oaXRlbSk7CisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIgPSBkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBp
bWFnZSA9IG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBkcmF3SXRlbS5pbWFnZVNpemUoKSwgZHJhd0l0
ZW0uZGVzdGluYXRpb25SZWN0KCksIGRyYXdJdGVtLnNvdXJjZSgpLCBkcmF3SXRlbS5vcHRpb25z
KCkpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6ZHJhd0ltYWdlQnVmZmVySXRlbShjb25zdCBEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGF1dG8mIGRyYXdJdGVtID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciY+KGl0ZW0pOwotICAg
IGF1dG8gaW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQoZHJhd0l0ZW0ucmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyID0gZHJhd0l0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgaWYgKCFyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8g
aW1hZ2UgPSBtX3JlbW90ZUltYWdlQnVmZmVySGFzaE1hcC5nZXQocmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEw
MSw2ICsxMjYsOCBAQCBib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6YXBwbHlSZXNvdXJj
ZUl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sCiB7CiAgICAgaWYgKGl0ZW0udHlw
ZSgpID09IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gZHJhd0ltYWdlQnVmZmVySXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICBpZiAoaXRlbS50
eXBlKCkgPT0gRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCisgICAgICAg
IHJldHVybiBkcmF3TmF0aXZlSW1hZ2VJdGVtKGl0ZW0sIGNvbnRleHQpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtMTA4LDYgKzEzNSw4IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlCiB7
CiAgICAgaWYgKG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm47CisgICAgaWYgKG1fcmVtb3RlTmF0aXZlSW1h
Z2VIYXNoTWFwLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1
cm47CiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBl
bmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmgKaW5kZXggMmM1MzAxZDAyZWVlLi4yM2U0MjJjOGFhZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTUwLDE2ICs1MCwyMSBAQCBwdWJsaWM6CiAgICAg
V2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGZsdXNoRHJhd2luZ0NvbnRleHRBbmRDb21taXQoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURh
dGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikgY29uc3Q7CiAKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0
aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCiAgICAg
Ym9vbCBhcHBseVJlc291cmNlSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYs
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiAgICAgdm9pZCByZWxlYXNlUmVt
b3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogcHJpdmF0
ZToKICAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPj47CisgICAgdXNpbmcgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRy
PjsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVySXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIGJvb2wg
ZHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiAgICAgUmVtb3RlSW1hZ2VCdWZmZXJI
YXNoTWFwIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwOworICAgIFJlbW90ZU5hdGl2ZUltYWdl
SGFzaE1hcCBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcDsKICAgICBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oCmluZGV4IDA4YTFkZWFlYTBhNi4uZTg1MWRkMDM4Yjc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oCkBAIC0xMzYsNiArMTM2LDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+Y3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShpbWFnZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB9CiAKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0+IGNyZWF0ZURy
YXdOYXRpdmVJbWFnZUl0ZW0oY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgV2ViQ29yZTo6Q2FjaGVkSW1h
Z2UmIGNhY2hlZEltYWdlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShp
bWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgY2FjaGVkSW1hZ2Us
IG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKICAgICB2b2lkIHdpbGxBcHBl
bmRJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3QgRGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAxYTA0YTllNDVhOWQuLjA2NTc4MTQy
YzZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0xMDEsNiArMTAxLDEx
IEBAIFJlZlB0cjxEaXNwbGF5TGlzdDo6SXRlbT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlRHJhd0ltYWdlQnVmZmVySXRlbShJbWFnCiAgICAgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VD
YWNoZS5jcmVhdGVEcmF3SW1hZ2VCdWZmZXJJdGVtKGltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucywgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CiB9CiAKK1JlZlB0cjxEaXNwbGF5TGlz
dDo6SXRlbT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlRHJhd05hdGl2ZUltYWdlSXRl
bShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSYgY2FjaGVkSW1h
Z2UsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQorewor
ICAgIHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY3JlYXRlRHJhd05hdGl2ZUltYWdlSXRl
bShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgY2FjaGVkSW1h
Z2UsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworfQorCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OnJlbGVhc2VSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90
ZUNsaWVudElkZW50aWZpZXIpCiB7CiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VS
ZW1vdGVDbGllbnQocmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CkBAIC0xMzIsNiArMTM3LDEzIEBA
IEltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbW90
ZUZsdXNoRHJhd2luZ0NvbnRleHRBbmRDCiAgICAgcmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7
CiB9CiAKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpy
ZW1vdGVDYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3sKKyAg
ICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Q2FjaGVOYXRpdmVJbWFnZShpbWFnZSwgcmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAg
cmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggOTZlZmU3Yzc1NGZmLi5lOTMzMzBlNzVhYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlNob3VsZEFjY2VsZXJhdGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSk7CiAgICAgdm9pZCByZWxl
YXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKTsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW0+IGNyZWF0ZURyYXdJbWFnZUJ1ZmZlckl0ZW0oV2ViQ29yZTo6
SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW0+IGNyZWF0ZURyYXdOYXRpdmVJbWFnZUl0ZW0oY29u
c3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
cyYsIFdlYkNvcmU6OkNhY2hlZEltYWdlJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVDbGllbnQoV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCkBAIC03OSw2ICs4
MCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiByZW1vdGVHZXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CiAgICAgdm9pZCByZW1vdGVGbHVzaERyYXdpbmdDb250ZXh0KGNvbnN0IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRl
bnRpZmllcik7CiAgICAgSW1hZ2VCdWZmZXJGbHVzaElkZW50aWZpZXIgcmVtb3RlRmx1c2hEcmF3
aW5nQ29udGV4dEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3QmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUHRyJik7CiAgICAgdm9pZCByZW1vdGVSZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IDBhODZjMTdlM2FlYS4uNjNmOTcyYzEwZGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTg0LDYgKzg0LDE0IEBAIFJlZlB0cjxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbT4gUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y3JlYXRlRHJhd0ltYWdl
QnVmZmVySXRlCiAgICAgcmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZm
ZXI6OmNyZWF0ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKTsKIH0KIAorUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtPiBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjcmVhdGVEcmF3TmF0aXZlSW1hZ2VJdGVtKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSwgUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgPSBmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoY2FjaGVkSW1hZ2UsIGlt
YWdlLCByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlbW90ZVJlc291cmNlSWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCiBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZUltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiBpbWFnZSkKIHsKICAgICAvLyBSZW1vdmUgdGhlIHJlc291cmNlIGZyb20g
dGhlIGNhY2hlLgpAQCAtOTksNiArMTA3LDE3IEBAIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltCiAg
ICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKIH0KIAorUmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VOYXRpdmVJbWFnZShjb25zdCBX
ZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgLy8gUmVtb3ZlIHRoZSByZXNv
dXJjZSBmcm9tIHRoZSBjYWNoZS4KKyAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9
IG1fcmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwLnRha2UoaW1hZ2UpOworCisgICAgLy8gVGVsbCB0
aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVuZGlu
ZyByZXBsYXlpbmcgYmFjay4KKyAgICBpZiAocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAg
ICAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5kaW5nUmVtb3ZlQ2xpZW50cyhyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9
CisKIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZXNvdXJjZUNhY2hlOjpmaW5kSW1h
Z2VCdWZmZXJGb3JDbGllbnQoSW1hZ2VCdWZmZXImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKIHsKICAgICBhdXRvIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllciA9IG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwLmdldCgmaW1hZ2UpOwpAQCAt
MTA2LDYgKzEyNSwxNyBAQCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VD
YWNoZTo6ZmluZEltYWdlQnVmZmVyRm9yQ2xpZW50KEltYWdlQnVmZgogICAgIHJldHVybiByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKK1JlbW90ZVJlc291cmNlSWRlbnRpZmllciBSZW1v
dGVSZXNvdXJjZUNhY2hlOjpmaW5kTmF0aXZlSW1hZ2VGb3JDbGllbnQoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2UmIGNhY2hlZEltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90ZVJl
c291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyID0gbV9yZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAuZW5zdXJl
KGltYWdlLCBbJl0geworICAgICAgICBjYWNoZWRJbWFnZS5hZGRDbGllbnQoKnRoaXMpOworICAg
ICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZUNhY2hlTmF0aXZlSW1h
Z2UoaW1hZ2UpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGFkZFJlbW90ZUNsaWVu
dChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAg
IHJldHVybiByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKIHZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6YWRkUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJ
ZGVudGlmaWVyKQogewogICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuaAppbmRleCBiNDhhOTU0ZDhkYzkuLmUxNzgwMTE1MWM2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRmx1c2hJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRJbWFnZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00OSw3ICs1MCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlcjsKIGNs
YXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAKLWNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGUg
eworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRJbWFn
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZShSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kJik7CiAKQEAgLTU4LDIzICs1OSwzMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21t
aXRJbWFnZUJ1ZmZlckZsdXNoQ29udGV4dChJbWFnZUJ1ZmZlckZsdXNoSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd0ltYWdlQnVmZmVySXRlbShXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlv
bnMmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbT4gY3JlYXRlRHJhd05hdGl2ZUltYWdlSXRlbShjb25zdCBX
ZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwg
V2ViQ29yZTo6Q2FjaGVkSW1hZ2UmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OwogCiAgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbGVhc2VJbWFnZUJ1
ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOworICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZWxlYXNlTmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQ
dHImKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVDbGllbnQoV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIHVz
aW5nIFJlbW90ZUNsaWVudHNIYXNoU2V0ID0gSGFzaFNldDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXI+OwogICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hN
YXA8V2ViQ29yZTo6SW1hZ2VCdWZmZXIqLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXI+OworICAgIHVzaW5nIFJlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CiAg
ICAgdXNpbmcgUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6
UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVDbGllbnRzSGFzaFNldD47CiAgICAgdXNp
bmcgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlcio+OwogCisgICAgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpIG92ZXJyaWRlIHsgcmVsZWFzZU5hdGl2ZUltYWdl
KGltYWdlKTsgfQorCiAgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGZpbmRJ
bWFnZUJ1ZmZlckZvckNsaWVudChXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIFdlYkNvcmU6OlJlbW90
ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIGZpbmROYXRpdmVJbWFnZUZvckNsaWVudChXZWJDb3JlOjpDYWNoZWRJbWFnZSYsIGNvbnN0
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBhZGRSZW1vdGVDbGllbnQo
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CiAgICAgVmVjdG9yPFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4gcmVtb3ZlUmVtb3RlQ2xpZW50KFJlbW90ZVJlc291
cmNlQ2xpZW50c0hhc2hNYXAmLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlQ2xpZW50SWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2VQZW5k
aW5nUmVtb3ZlQ2xpZW50cyhXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAg
ICAgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwIG1fcmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwOwor
ICAgIFJlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcCBtX3JlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcDsK
ICAgICBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1fcmVtb3RlUmVzb3VyY2VDbGllbnRz
SGFzaE1hcDsKICAgICBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1fcmVtb3RlUmVzb3Vy
Y2VDbGllbnRzUGVuZGluZ1JlbGVhc2VIYXNoTWFwOwogICAgIFJlbW90ZUltYWdlQnVmZmVyTWVz
c2FnZUhhbmRsZXJIYXNoTWFwIG1fcmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlckhhc2hN
YXA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412064</attachid>
            <date>2020-10-21 20:49:04 -0700</date>
            <delta_ts>2020-10-28 16:33:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201021204903.patch</filename>
            <type>text/plain</type>
            <size>126345</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZhZWI5MTE3ZGQ4MWFj
OTVmMmUwZDBiY2VkZmU3OThlZTM5NzVkMS4uOTFlYmRlZmEwNjgzODcwMTA1NTZmNTNmZGE5OGZi
YTFkNzc2MmZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NiBAQAorMjAyMC0xMC0yMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IENhY2hlIHRoZSBCaXRtYXBJbWFnZSBmcmFtZSBpbiBHUFUgUHJvY2VzcyBhbmQgYWxsb3cgcmVm
ZXJlbmNpbmcgaXQgd2l0aCBpdHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1OTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPbmx5IHRoZSBmcmFtZXMgb2Yg
dGhlIEJpdG1hcEltYWdlIHdpbGwgYmUgY2FjaGVkIGluIHRoZSBHUFUgc2lkZS4gVGhlCisgICAg
ICAgIGZyYW1lcyBvZiBCaXRtYXBJbWFnZSBoYXZlIGEgd2VsbCBkZWZpbmVkIGxpZmUgY3ljbGUg
aW4gdGhlIFdlYiBQcm9jZXNzLgorICAgICAgICBUaGUgY291bnRlcnBhcnQgZnJhbWVzIGluIHRo
ZSBHUFUgUHJvY2VzcyB3aWxsIGhhdmUgYSBzaW1pbGFyIGxpZmUgY3ljbGUuCisgICAgICAgIFdo
ZW4gdGhlIGZyYW1lIGlzIGRyYXduIGZvciB0aGUgZmlyc3QgdGltZSBpdCB3aWxsIGJlIHRyYW5z
ZmVyZWQgZnJvbSBXZWIKKyAgICAgICAgUHJvY2VzcyB2aWEgYSBTaGFyZWFibGVCaXRtYXAgdG8g
dGhlIEdQVSBQcm9jZXNzIGFuZCBjYWNoZWQgdW5kZXIgYSB1bmlxdWUKKyAgICAgICAgUmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyIHdoaWNoIHdpbGwgYmUgdXNlZCB0byByZWNvcmQgdGhlIE5hdGl2
ZURyYXdJbWFnZQorICAgICAgICBpdGVtLiBXaGVuIHRoZSBCaXRtYXBJbWFnZSBkZWNpZGVzIHRv
IGRlc3Ryb3kgaXRzIGRlY29kZWQgZnJhbWUsIGEgbWVzc2FnZQorICAgICAgICB3aWxsIGJlIHNl
bnQgZnJvbSB0aGUgV2ViIFByb2Nlc3MgdG8gdGhlIEdQVSBQcm9jZXNzIHRvIHJlbW92ZSB0aGUg
Y2FjaGVkCisgICAgICAgIGZyYW1lLiBGb3IgdGhlIGRldGFpbHMgYWJvdXQgdGhlIGxpZmUgY3lj
bGUgb2YgdGhlIGNhY2hlZCBOYXRpdmVJbWFnZXMsCisgICAgICAgIHNlZSB0aGUgV2ViS2l0IENo
YW5nZUxvZy4KKworICAgICAgICAqIGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpuYXRpdmVJbWFnZVdpbGxCZURl
c3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6bmF0aXZlSW1hZ2VXaWxs
QmVEZXN0cm95ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oOgorICAgICAgICBXZSBuZWVk
IHRoZSBDYWNoZWRJbWFnZSB0byBiZSBzZW50IGFsb25nIHdpdGggdGhlIE5hdGl2ZUltYWdlIHRv
CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKCkuCisKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6
CisgICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBpcyBhIHN1cGVyY2xhc3Mgb2YgQ2Fj
aGVkSW1hZ2VDbGllbnQuIEl0IHdpbGwgYmUKKyAgICAgICAgY2FsbGVkIGZvciBhbnkgTmF0aXZl
SW1hZ2UgYmVmb3JlIGl0IGlzIGRlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgIE5vdGlmeSB0aGUg
Q2FjaGVkSW1hZ2VDbGllbnRzIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBOYXRpdmVJbWFnZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdO
YXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgRHJhd05h
dGl2ZUltYWdlIGNhbiBob2xkIGEgTmF0aXZlSW1hZ2VQdHIgb3IgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLiAKKyAgICAgICAgT25seSB0aGUgb25lIHdpdGggdGhlIE5hdGl2ZUltYWdlUHRyIHdp
bGwgYmUgcmVwbGF5ZWQgYmFjayBoZXJlLiBUaGUgb25lCisgICAgICAgIHdpdGggUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyICh3aGljaCBpcyBSZW1vdGVJbWFnZUJ1ZmZlciByaWdodCBub3cpIGlz
CisgICAgICAgIHJlc3BvbnNpYmxlIGZvciByZXBsYXlpbmcgaXQgYmFjay4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6cmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
TmF0aXZlSW1hZ2U6Om5hdGl2ZUltYWdlUHRyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmltYWdlU2l6ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpvcHRpb25zIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6Cisg
ICAgICAgIEFsbG93IERyYXdOYXRpdmVJbWFnZSB0byBob2xkIFJlbW90ZVJlc291cmNlSWRlbnRp
Zmllci4gSW4gdGhpcyBjYXNlLCBpdAorICAgICAgICB3aWxsIGJlIHNlbnQgdG8gdGhlIEdQVSBw
cm9jZXNzIHRvIGJlIHJlcGxheWVkIGJhY2suCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmxvY2tSZW1vdGVO
YXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoK
KworCisyMDIwLTEwLTIwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFUgUHJvY2Vzc106IEltcGxlbWVudCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVm
ZmVyIGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNzU2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCB0aGUgRHJhd0ltYWdlQnVmZmVyIERpc3BsYXlMaXN0IGl0ZW0uIEl0IHdpbGwgYmUgdXNl
ZCBvbmx5IGZvciBHUFUKKyAgICAgICAgcmVuZGVyaW5nLiBUaGUgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIG9mIHRoZSBzb3VyY2UgSW1hZ2VCdWZmZXIgd2lsbAorICAgICAgICBiZSByZWNvcmRl
ZC4gRm9yIGRldGFpbHMgb24gaG93IGRyYXdpbmcgYW4gSW1hZ2VCdWZmZXIgdG8gYW5vdGhlciAK
KyAgICAgICAgSW1hZ2VCdWZmZXIgd29ya3Mgc2VlIHRoZSBXZWJLaXQgQ2hhbmdlTG9nLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6c2l6ZUluQnl0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6RHJh
d0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VC
dWZmZXI6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VC
dWZmZXI6OnJlbW90ZVJlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcjo6ZGVzdGluYXRpb25SZWN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI6Om9w
dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
SW1hZ2VCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpk
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpk
cmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OkRlbGVnYXRlOjpsb2NrUmVtb3RlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisKKzIwMjAtMTAtMTkgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
OiBJbnRyb2R1Y2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVtb3Rl
IHJlc291cmNlcyBpbiBXZWIgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lIFJlY29yZGVyOjpPYnNlcnZlciB0byBSZWNvcmRlcjo6
RGVsZWdhdGUgYmVjYXVzZSBpdCB3aWxsIGJlIHJlc3BvbnNpYmxlCisgICAgICAgIGZvciBjcmVh
dGluZyBEaXNwbGF5TGlzdEl0ZW1zIGluIGZ1dHVyZSBwYXRjaGVzLiBTbyBpdCB3aWxsIG5vdCBi
ZSBqdXN0CisgICAgICAgIGFuIG9ic2VydmVyLiBBbHNvIGRvIG5vdCBtYWtlIERpc3BsYXlMaXN0
OjpJbWFnZUJ1ZmZlciBhIHN1cGVyY2xhc3Mgb2YgaXQuCisgICAgICAgIFJlbW90ZUltYWdlQnVm
ZmVyUHJveHksIHdoaWNoIGlzIGEgc3VwZXJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6SW1hZ2VCdWZm
ZXIsCisgICAgICAgIHdpbGwgYmUgdGhlIHN1cGVyY2xhc3Mgb2YgUmVjb3JkZXI6OkRlbGVnYXRl
LgorCisgICAgICAgIE1ha2UgSW1hZ2VCdWZmZXJCYWNrZW5kOjppc0FjY2VsZXJhdGVkIGEgc3Rh
dGljIG1lbWJlciBpbnN0ZWFkIG9mIGEgdmlydHVhbAorICAgICAgICBtZXRob2QuIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSB3b3VsZCB3YW50IHRvIGtub3cgd2hldGhlciB0aGUgYmFja2Vu
ZAorICAgICAgICBvZiBhbiBJbWFnZUJ1ZmZlciBpc0FjY2VsZXJhdGVkIG9yIG5vdCB3aXRob3V0
IGhhdmluZyB0byBjcmVhdGUgaXQuCisgICAgICAgIEltYWdlQnVmZmVyQmFja2VuZDo6aXNBY2Nl
bGVyYXRlZCB3aWxsIGJlIHNldCB0byBmYWxzZSBhbmQKKyAgICAgICAgSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjppc0FjY2VsZXJhdGVkIHdpbGwgYmUgc2V0IHRvIHRydWUuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjppc0FjY2VsZXJhdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjppc0FjY2VsZXJh
dGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRleHQ6OkRyYXdpbmdDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0OjpE
cmF3aW5nQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6UmVjb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjp3aWxsQXBwZW5kSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6On5EZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Ok9ic2VydmVyOjp+T2JzZXJ2ZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpPYnNl
cnZlcjo6d2lsbEFwcGVuZEl0ZW0pOiBEZWxldGVkLgorCiAyMDIwLTEwLTE5ICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBbV2ViSURMXSAlSW50ZXJm
YWNlJS5wcm90b3R5cGUuY29uc3RydWN0b3Igc2hvdWxkIGJlIGRlZmluZWQgb24gW1tTZXRdXSBy
ZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBkN2Q2ODRiY2MwZDc2YjE3MzM3ODA5MmEyNzk3N2VkMjdlMGI3
NzE2Li44YzNmNWQxNTFmMTUxNmJlZDc2YmVhYWM4NzlhNWI4YWU2YTQyNjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3NyBAQAorMjAyMC0xMC0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFw
cGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENhY2hlIHRoZSBCaXRtYXBJbWFnZSBm
cmFtZSBpbiBHUFUgUHJvY2VzcyBhbmQgYWxsb3cgcmVmZXJlbmNpbmcgaXQgd2l0aCBpdHMgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGlzIHRoZSBkcmF3aW5nIHNlcXVlbmNlIG9mIGEgQml0bWFwSW1h
Z2UgZnJhbWUgaW4gdGhlIFdlYiBQcm9jZXNzOgorCisgICAgICAgIDEpIEJpdG1hcEltYWdlOjpk
cmF3KCkgY2FsbHMgSW1hZ2VPYnNlcnZlcjo6ZHJhd05hdGl2ZUltYWdlKCkuCisgICAgICAgIDIp
IENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkcmF3TmF0aXZlSW1hZ2UoKSBmaW5k
cyB0aGUgYXNzb2NpYXRlZAorICAgICAgICAgICBDYWNoZWRJbWFnZSBhbmQgY2FsbHMgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoKS4KKyAgICAgICAgMykgUmVjb3JkZXI6OmRyYXdO
YXRpdmVJbWFnZSgpIGNhbGxzIHRoZSBsb2NrUmVtb3RlTmF0aXZlSW1hZ2UoKSBvZiBpdHMKKyAg
ICAgICAgICAgZGVsZWdhdGUgd2hpY2ggaXMgUmVtb3RlSW1hZ2VCdWZmZXJQb3J4eSBpbiB0aGUg
Y2FzZSBvZiAyRCBjYW52YXMuCisgICAgICAgIDQpIFJlbW90ZUltYWdlQnVmZmVyUG9yeHkgY2Fs
bHMgbG9ja1JlbW90ZU5hdGl2ZUltYWdlRm9yUmVtb3RlQ2xpZW50KCkgb2YKKyAgICAgICAgICAg
dGhlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBvZiBpdHMgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LgorICAgICAgICA1KSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgZmluZHMgdGhlIE5h
dGl2ZUltYWdlIG9mIHRoZSBnaXZlbiBDYWNoZWRJbWFnZQorICAgICAgICAgICBpbiBpdHMgY2Fj
aGUuIElmIGl0IGRvZXMgbm90IGZpbmQgaXQsIGl0IGFkZHMgaXQgdG8gdGhlIGNhY2hlLCBhc3Np
Z25zCisgICAgICAgICAgIGEgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHRvIGl0IGFuZCBhc2tz
IHRoZSBHUFUgUHJvY2VzcyB0byBjYWNoZSBpdAorICAgICAgICAgICBhbHNvLCBtYXJrIHRoZSBj
YWNoZWQgTmF0aXZlSW1hZ2UgYSBsb2NrZWQgcmVzb3VyY2UgZm9yIHRoZSAKKyAgICAgICAgICAg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IGFuZCByZXR1cm5zIHRoZSBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuCisKKyAgICAgICAgVGhlIGRyYXdpbmcgc2VxdWVuY2UgaW4gdGhlIEdQVSBQcm9j
ZXNzIGlzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgMSkgV2hlbiBmbHVzaGluZyBhIERpc3Bs
eUxpc3QgaGFwcGVucywgRGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBseSgpCisgICAgICAgICAg
IGNhbGxzIGFwcGx5KCkgb2YgaXRzIGRlbGVnYXRlICh3aGljaCBpcyBSZW1vdGVJbWFnZUJ1ZmZl
cikuCisgICAgICAgIDIpIFJlbW90ZUltYWdlQnVmZmVyOjphcHBseSgpIGNhbGxzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmFwcGx5UmVzb3VyY2VJdGVtKCkKKyAgICAgICAgICAgd2hpY2ggd2ls
bCBjaGVjayBpZiB0aGUgdHlwZSBvZiB0aGUgSXRlbSBpcyBEcmF3TmF0aXZlSW1hZ2UuCisgICAg
ICAgIDMpIElmIGl0IGlzIGEgRHJhd05hdGl2ZUltYWdlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
IGZpbmRzIHRoZSBjYWNoZWQKKyAgICAgICAgICAgTmF0aXZlSW1hZ2UgaW4gaXRzIFJlbW90ZVJl
c291cmNlQ2FjaGUgZ2l2ZW4gdGhlIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICAg
ICBhbmQgZHJhd3MgaXQgdG8gdGhlIGNvbnRleHQgb2YgdGhlIFJlbW90ZUltYWdlQnVmZmVyLgor
CisgICAgICAgIFRoZSByZWxlYXNlIHNlcXVlbmNlIGluIHRoZSBXZWIgUHJvY2VzcyBpcyB0aGUg
Zm9sbG93aW5nOgorCisgICAgICAgIDEpIEltYWdlU291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEo
KSBjYWxscyB0aGUgSW1hZ2VPYnNlcnZlciB3aGVuIGEgZGVjb2RlZAorICAgICAgICAgICBmcmFt
ZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuCisgICAgICAgIDIpIENhY2hlZEltYWdlOjpDYWNo
ZWRJbWFnZU9ic2VydmVyOjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCgpIGZpbmRzCisgICAg
ICAgICAgIHRoZSBhc3NvY2lhdGVkIENhY2hlZEltYWdlIGFuZCBjYWxscyBDYWNoZWRJbWFnZTo6
bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoKS4KKyAgICAgICAgMykgQ2FjaGVkSW1hZ2UgY2Fs
bHMgYWxsIHRoZSBDYWNoZWRJbWFnZUNsaWVudHMgdG8gbm90aWZ5IHRoZW0uCisgICAgICAgIDQp
IEJlY2F1c2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHJlZ2lzdGVycyBpdHNlbGYgYXMgYSBD
YWNoZWRJbWFnZUNsaWVudAorICAgICAgICAgICBvZiB0aGlzIENhY2hlZEltYWdlLCBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKCkKKyAgICAgICAg
ICAgd2lsbCBiZSBjYWxsZWQuCisgICAgICAgIDUpIFRoZSBjYWNoZWQgTmF0aXZlSW1hZ2Ugd2ls
bCBiZSByZW1vdmVkIGZyb20gdGhlIGNhY2hlIGFuZCBhIG1lc3NhZ2Ugd2lsbAorICAgICAgICAg
ICBiZSBzZW50IHRvIHRoZSBHUFUgUHJvY2VzcyB3aGVuIG5vIHJlbW90ZSBjbGllbnQgaXMgcmVm
ZXJlbmNpbmcgdGhpcworICAgICAgICAgICBOYXRpdmVJbWFnZS4KKworICAgICAgICBUaGUgcmVs
ZWFzZSBzZXF1ZW5jZSBpbiB0aGUgR1BVIFByb2Nlc3MgaXMgdGhlIGZvbGxvd2luZzoKKworICAg
ICAgICAxKSBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UgcmVsZWFz
ZXMgdGhlIGNhY2hlZAorICAgICAgICAgICBOYXRpdmVJbWFnZSB2aWEgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OmFwcGx5KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseVJlc291
cmNlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5
TWVkaWFJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2Fj
aGVOYXRpdmVJbWFnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlOjpjYWNoZWROYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZU5hdGl2ZUltYWdlRm9yUmVtb3RlQ2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuaDoKKworMjAyMC0xMC0yMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4K
KworICAgICAgICBbR1BVIFByb2Nlc3NdOiBJbXBsZW1lbnQgRGlzcGxheUxpc3Q6OkRyYXdJbWFn
ZUJ1ZmZlciBpdGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTc1NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgc2VxdWVuY2UgaW4gdGhlIFdlYiBQcm9jZXNzIGlzIHRoZSBmb2xsb3dpbmc6CisK
KyAgICAgICAgLS0gR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoKSB1c2VzIERpc3Bs
YXlMaXN0OjpSZWNvcmRlciB0byBjaGVjaworICAgICAgICAgICB3aGV0aGVyIGl0IGlzIGFwcHJv
cHJpYXRlIHRvIGNyZWF0ZSBhIERyYXdJbWFnZUJ1ZmZlciBpdGVtIG9yIG5vdC4KKworICAgICAg
ICAtLSBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcigpIHVzZXMgdGhlIGRl
bGVnYXRlIHRvIHNlZSBpZgorICAgICAgICAgICB0aGUgSW1hZ2VCdWZmZXIgaXMgcmVtb3RlIG9y
IG5vdCBhbmQgd2hldGhlciBpdCBjYW4gYmUgbG9ja2VkIHRpbGwgCisgICAgICAgICAgIHJlcGxh
eWluZyBiYWNrIHRoZSBEaXNwbGF5TGlzdCBpbiB0aGUgR1BVIHNpZGUuIAorCisgICAgICAgIC0t
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkgaW5oZXJpdHMgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpE
ZWxlZ2F0ZS4gU28gaXRzCisgICAgICAgICAgIGxvY2tSZW1vdGVJbWFnZUJ1ZmZlcigpIGlzIGNh
bGxlZC4KKworICAgICAgICAtLSBJZiB0aGUgSW1hZ2VCdWZmZXIgY2FuIGJlIGxvY2tlZCwgYSBE
cmF3SW1hZ2VCdWZmZXJJdGVtIGlzIGNyZWF0ZWQgd2l0aAorICAgICAgICAgICB0aGUgSW1hZ2VC
dWZmZXI6OnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLgorCisgICAgICAgIFRoZSBzZXF1ZW5j
ZSBpbiB0aGUgR1BVIFByb2Nlc3MgaXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAtLSBXaGVu
IHJlcGxheWluZyBiYWNrIHRoZSBEaXNwbGF5TGlzdCwgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHdp
bGwgY2FsbAorICAgICAgICAgICBpdHMgZGVsZWdhdGUgdG8gY2hlY2sgaWYgaXQgd2FudHMgdG8g
YXBwbHkgdGhlIERyYXdJbWFnZUJ1ZmZlci4KKworICAgICAgICAtLSBCZWNhdXNlIFJlbW90ZUlt
YWdlQnVmZmVyIGluaGVyaXRzIERpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUsCisgICAg
ICAgICAgIFJlbW90ZUltYWdlQnVmZmVyOjphcHBseSgpIHdpbGwgYmUgY2FsbGVkLgorCisgICAg
ICAgIC0tIFJlbW90ZUltYWdlQnVmZmVyIHdpbGwgY2FsbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjphcHBseVJlc291cmNlSXRlbSgpCisgICAgICAgICAgIHdoaWNoIHdpbGwgY2hlY2sgd2hldGhl
ciB0aGUgaXRlbSdzIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciBpcyBvbmUgb2YgCisgICAgICAg
ICAgIHRoZSBJbWFnZUJ1ZmZlcnMgaW4gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGUgb3Igbm90Lgor
CisgICAgICAgIC0tIElmIHRoZXJlIGlzIGEgY2FjaGVkIEltYWdlQnVmZmVyLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjphcHBseVJlc291cmNlSXRlbSgpCisgICAgICAgICAgIHdpbGwgZHJhdyB0
byBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6YXBwbHlSZXNvdXJjZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZUltYWdlQnVmZmVyRm9yUmVt
b3RlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojps
b2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6dW5sb2NrUmVtb3RlUmVzb3VyY2VzRm9y
UmVtb3RlQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuaDoKKworMjAyMC0xMC0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IEludHJvZHVj
ZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZW1vdGUgcmVzb3VyY2Vz
IGluIFdlYiBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTc1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IGFuZCBt
b3ZlIHNlbmRpbmcgdGhlIG1lc3NhZ2VzCisgICAgICAgIHRvIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS4KKworICAgICAgICBUbyBhbGxvdyBjYXN0aW5nIEltYWdlQnVmZmVyIHRvIFJlbW90
ZUltYWdlQnVmZmVyUHJveHksIGEgbmV3IG1ldGhvZCBuYW1lZAorICAgICAgICByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIoKSBpcyBhZGRlZCB0byBJYW1nZUJ1ZmZlciBhbmQgaXQgaXMgb25seSBv
dmVycmlkZGVuCisgICAgICAgIGJ5IFJlbW90ZUltYWdlQnVmZmVyUHJveHkuIFRoaXMgbWV0aG9k
IGlzIHVzZWQgaW4gU1BFQ0lBTElaRV9UWVBFX1RSQUlUUworICAgICAgICBtYWNyb3MgYWxvbmcg
d2l0aCBJYW1nZUJ1ZmZlcjo6aXNBY2NlbGVyYXRlZCgpLgorCisgICAgICAgIEludHJvZHVjZSBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgd2hpY2ggd2lsbCBtYW5hZ2UgY2FjaGluZyBhbmQgcmVs
ZWFzaW5nCisgICAgICAgIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LiBDYWNoaW5nIE5hdGl2
ZUltYWdlIHdpbGwgYmUgYWRkZWQgdG8gaXQgaW4KKyAgICAgICAgZnV0dXJlIHBhdGNoZXMuIE1v
cmUgYWJvdXQgY29udHJvbGxpbmcgdGhlIGxpZmUgY3ljbGVzIG9mIHJlbW90ZSByZXNvdXJjZXMg
CisgICAgICAgIHdpbGwgYmUgYWRkZWQgd2l0aCBzdXBwb3J0aW5nIGRyYXdpbmcgcmVtb3RlIHJl
c291cmNlcyB0byByZW1vdGUgY2xpZW50LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAg
ICAgIChpc1R5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5
Lmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVy
UHJveHk6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5Ojpjb21taXRGbHVzaERpc3BsYXlMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmlzUGVuZGluZ0ZsdXNoIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpnZXRJbWFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6aW1hZ2VC
dWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyLmguCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9y
bVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaC4KKwogMjAyMC0xMC0xOSAgUGVuZyBMaXUgIDxwZW5n
LmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFR3byBmZWF0dXJlIGZsYWcgbmFtZXMgYXJlIGlu
Y29ycmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCBiYTEyOThlNGY3NDdj
M2JkYjM4ZmFlODA5MjgyNjg4OTZiZWU5ZWY5Li4xMjlkZGRkMDJkZWU4M2ExM2IwOWY0ZjJkZTEz
NDcwOGU2ZWY3NDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtNjAxLDEw
ICs2MDEsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3Qg
SW1hZ2UmLCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogCisgICAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpIG92ZXJyaWRlCisgICAgeworICAgICAgICBjb250ZXh0
LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CisgICAgfQorCiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJikgb3Zl
cnJpZGUgeyB9CiAKICAgICBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYp
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUo
Y29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiA9IG51bGxw
dHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpIG92ZXJyaWRlIHsg
fQorICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25z
dCBOYXRpdmVJbWFnZVB0ciYpIG92ZXJyaWRlIHsgfQorCiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0
KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSBvdmVycmlkZSB7IH0KICAg
ICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgb3ZlcnJpZGUgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDVj
YzkzMzgzMjU3NGRjYmViZWQ4MmMyYzBiY2U4ZjAwYzJiY2E3MmUuLmZlYTkyOTI1NTU4YmY1YjM4
NGNlMDI2N2EwNGUxODc1N2ZjOTE3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcApAQCAtNDExLDYgKzQxMSwxNyBAQCB2b2lkIENhY2hlZEltYWdlOjpD
YWNoZWRJbWFnZU9ic2VydmVyOjpkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmIGltYWdl
LCBsbwogICAgICAgICBjYWNoZWRJbWFnZS0+ZGVjb2RlZFNpemVDaGFuZ2VkKGltYWdlLCBkZWx0
YSk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRp
dmVJbWFnZShjb25zdCBJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBmb3IgKGF1dG8gY2Fj
aGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykgeworICAgICAgICBpZiAoJmltYWdlICE9IGNhY2hl
ZEltYWdlLT5pbWFnZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGNvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zLCBjYWNoZWRJbWFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMpOworfQorCiB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2Vy
dmVyOjpkaWREcmF3KGNvbnN0IEltYWdlJiBpbWFnZSkKIHsKICAgICBmb3IgKGF1dG8gY2FjaGVk
SW1hZ2UgOiBtX2NhY2hlZEltYWdlcykKQEAgLTQzNCw2ICs0NDUsMTIgQEAgdm9pZCBDYWNoZWRJ
bWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFn
ZSYgaW1hZ2UsIEkKICAgICAgICAgY2FjaGVkSW1hZ2UtPmltYWdlRnJhbWVBdmFpbGFibGUoaW1h
Z2UsIGFuaW1hdGluZ1N0YXRlLCBjaGFuZ2VSZWN0LCBkZWNvZGluZ1N0YXR1cyk7CiB9CiAKK3Zv
aWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6Om5hdGl2ZUltYWdlV2lsbEJlRGVz
dHJveWVkKGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUlt
YWdlKQoreworICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQorICAg
ICAgICBjYWNoZWRJbWFnZS0+bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoaW1hZ2UsIG5hdGl2
ZUltYWdlKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6Y2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiB7CiAg
ICAgZm9yIChhdXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCkBAIC02ODksNiArNzA2
LDE2IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2Um
IGltYWdlLCBJbWFnZUFuaW1hdGluZ1N0YXRlIGFuCiAgICAgICAgIG1fY2xpZW50c1dhaXRpbmdG
b3JBc3luY0RlY29kaW5nLmNsZWFyKCk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6Om5hdGl2ZUlt
YWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIG5hdGl2ZUltYWdlKQoreworICAgIGlmICgmaW1hZ2UgIT0gbV9pbWFnZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkSW1hZ2VDbGll
bnQ+IGNsaWVudFdhbGtlcihtX2NsaWVudHMpOworICAgIHdoaWxlIChDYWNoZWRJbWFnZUNsaWVu
dCogY2xpZW50ID0gY2xpZW50V2Fsa2VyLm5leHQoKSkKKyAgICAgICAgY2xpZW50LT5uYXRpdmVJ
bWFnZVdpbGxCZURlc3Ryb3llZCgqdGhpcywgbmF0aXZlSW1hZ2UpOworfQorCiB2b2lkIENhY2hl
ZEltYWdlOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiBpbWFnZSwgY29uc3QgSW50UmVjdCog
cmVjdCkKIHsKICAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDcyZDU5YzFmZjQ4NDVjMjMyNzU5MjBiYzhkMTJm
MjczNDMyN2Y3MmMuLjg2Nzk4MzJhNGNjMTBiYzY0ZjdhM2U1NGIyNTliZTUzZmE3MTI4ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xNDksMTAgKzE0
OSwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2Vk
KGNvbnN0IEltYWdlJiwgRW5jb2RlZERhdGFTdGF0dXMpIGZpbmFsOwogICAgICAgICB2b2lkIGRl
Y29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgZmluYWw7CisK
KyAgICAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRHJhdyhjb25z
dCBJbWFnZSYpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNv
bnN0IEltYWdlJikgZmluYWw7CiAgICAgICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25z
dCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3Qg
PSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5h
bDsKKyAgICAgICAgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYs
IGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgZmluYWw7CisKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5S
ZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgZmluYWw7CiAKQEAgLTE2NCw2ICsx
NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpOwogICAgIGJv
b2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJik7CiAgICAgdm9pZCBpbWFnZUZy
YW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0
dXM6OkludmFsaWQpOworICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3Qg
SW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChj
b25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKGNvbnN0IEltYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggYmE2NDQ1YjdlYTdlZDk2M2Q2MWJmZjMwZjI4YTlh
NGVkN2Y5YzEzNi4uYjkyZTc5Y2U0ZTQzNWE1ODQwZjA1Y2Q5ZTUwYWVmYTcxYjhjYmFkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKQEAg
LTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiSW1hZ2VUeXBlcy5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNiArNDgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVk
IHdoZW4gYSBuZXcgZGVjb2RlZCBmcmFtZSBmb3IgYSBsYXJnZSBpbWFnZSBpcyBhdmFpbGFibGUg
b3Igd2hlbiBhbiBhbmltYXRlZCBpbWFnZSBpcyByZWFkeSB0byBhZHZhbmNlIHRvIHRoZSBuZXh0
IGZyYW1lLgogICAgIHZpcnR1YWwgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZh
aWxhYmxlKENhY2hlZEltYWdlJiBpbWFnZSwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50
UmVjdCogY2hhbmdlUmVjdCkgeyBpbWFnZUNoYW5nZWQoJmltYWdlLCBjaGFuZ2VSZWN0KTsgcmV0
dXJuIFZpc2libGVJblZpZXdwb3J0U3RhdGU6Ok5vOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF0
aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoQ2FjaGVkSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFnZVB0
ciYpIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50KENh
Y2hlZEltYWdlJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGVGb3JJbWFnZShDYWNoZWRJbWFnZSYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIxZWQ0ZTRlODQ3OTk3YjU5YzdkZmQz
ZDI2MTA3NTY2Y2NhNDcxM2YuLjBhZjZjM2Q4YjIzMTg1MTc3ODliMDcyMzQ1Zjk2NzQzYjFkN2Y2
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKQEAgLTIwNSwxMCArMjA1LDEwIEBAIGJvb2wgQml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29s
b3IoKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCitzdGF0aWMgaW5saW5lIHZvaWQgZHJhd05hdGl2ZUltYWdlKEJpdG1hcElt
YWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZVB0
ciYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMg
YW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgc3Vic2Ft
cGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgSW50U2l6ZSBzdWJz
YW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKG5hdGl2ZUltYWdlKTsKICAgICBpZiAo
b3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpCiAgICAgICAgIHN1YnNh
bXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVkSW1hZ2VTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAK
QEAgLTIxNyw3ICsyMTcsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYKICAgICBpZiAoc3Vi
c2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQogICAgICAgICBhZGp1c3RlZFNyY1JlY3QgPSBt
YXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9hdFJlY3QoeyB9LCBz
dWJzYW1wbGVkSW1hZ2VTaXplKSk7CiAKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9u
cyk7CisgICAgaWYgKGltYWdlLmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgaW1hZ2UuaW1hZ2VP
YnNlcnZlcigpLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIG5hdGl2ZUltYWdlLCBz
dWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsK
KyAgICBlbHNlCisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBz
dWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsK
IH0KIAogSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTMwOCw5ICszMTEs
OSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIGF1dG8gb3JpZW50YXRpb24gPSBvcHRp
b25zLm9yaWVudGF0aW9uKCk7CiAgICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3JpZW50YXRp
b246OkZyb21JbWFnZSkgewogICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25B
dEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBj
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKG9yaWVudGF0aW9uKSksIHsg
b3B0aW9ucywgb3JpZW50YXRpb24gfSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZSgqdGhpcywg
Y29udGV4dCwgaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRp
b24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShz
aXplKG9yaWVudGF0aW9uKSksIG9wdGlvbnMpOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKnRo
aXMsIGNvbnRleHQsIGltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKG9yaWVu
dGF0aW9uKSksIG9wdGlvbnMpOwogCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9
IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIApAQCAtMzk1LDcg
KzM5OCw3IEBAIFN1YnNhbXBsaW5nTGV2ZWwgQml0bWFwSW1hZ2U6OnN1YnNhbXBsaW5nTGV2ZWxG
b3JTY2FsZUZhY3RvcihHcmFwaGljc0NvbnRleHQmIGNvCiB7CiAjaWYgVVNFKENHKQogICAgIC8v
IE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0
cy4KLSAgICBpZiAoQ0dDb250ZXh0R2V0VHlwZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSA9
PSBrQ0dDb250ZXh0VHlwZVBERikKKyAgICBpZiAoY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQo
KSAmJiBDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpID09IGtDR0Nv
bnRleHRUeXBlUERGKQogICAgICAgICByZXR1cm4gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdDsK
IAogICAgIGZsb2F0IHNjYWxlID0gc3RkOjptaW4oZmxvYXQoMSksIHN0ZDo6bWF4KHNjYWxlRmFj
dG9yLndpZHRoKCksIHNjYWxlRmFjdG9yLmhlaWdodCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggYzZj
MTllMTI4OWY0OGIwMjBlYTc4YmNlMzlkMTA2YzNkYjkzYjA3ZC4uODY5NzM5NWZhNGM4ZDA4NTFj
N2I3NzkwNDA2ZTYxYzkxOGZjZWE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtNTAsMTMgKzUwLDggQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJUeXBlPihuZXcgSW1hZ2VCdWZmZXJUeXBlKFdURk1vdmUo
YmFja2VuZCksIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9
Ci0gICAgCi0gICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBiYWNrZW5kLT5pc0FjY2VsZXJhdGVkKCk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CisKKyAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBCYWNrZW5kVHlwZTo6aXNBY2NlbGVyYXRlZDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAg
Q29uY3JldGVJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8QmFja2VuZFR5cGU+JiYgYmFja2Vu
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDBkYzA1NTdiMGQ0ZjA3MmVkYjk4YmM1OGMxMjliNDIxYTgwOGYwNmQu
LjcxMTNkN2Y2NGUxYTc2Mjg5ODFmYzA5OTZmZDY4ZDg2ODUyNmIzZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
NzMxLDEzICs3MzEsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25z
dCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmNs
ZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICBt
X2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucywgY2FjaGVkSW1hZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03
NjAsNyArNzYwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwog
Ci0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYmIGltYWdlLmlzUERGRG9jdW1lbnRJ
bWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVy
cG9sYXRpb25RdWFsaXR5KCkpOwpAQCAtNzcyLDcgKzc3Miw3IEBAIEltYWdlRHJhd1Jlc3VsdCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1w
bCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+
ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFj
aW5nLCBvcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKQEAgLTc4NSw3ICs3ODUsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1
bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmIChtX2ltcGwgJiYgaW1h
Z2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxl
ZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxl
LCB2UnVsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxl
ICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewpAQCAtODEyLDYgKzgxMiw5IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucykpCisgICAgICAgIHJldHVybjsKKwog
ICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAgICBp
bWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggMGQxY2E5MmQ2MDQ1ZWIzN2E3OGQzZTE4OTdjMjZmNDJiOWM3NmYzYS4uMjUxOWQ3YmVhMTgy
MTk4N2Y3MWJhNzBmNDQxZjJmZmIwNWQyYmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xh
c3MgR2x5cGhCdWZmZXI7CiAjZW5kaWYKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3Mg
Q2FjaGVkSW1hZ2U7CiBjbGFzcyBGbG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhZGllbnQ7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwpAQCAtMzc5LDcgKzM4MCw3IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCBsaW5lV2lkdGgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSwgQ2FjaGVkSW1hZ2UqID0gbnVsbHB0cik7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JU
IEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246
OkZyb21JbWFnZSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCBjMmNhZmUzMzZjYzU2OTk1ZGM0MGRlZDQw
MTY3ZTY4M2I0MmE1N2Y3Li42ZDA4NWVkOGM0MmM2NTYxMGMzYjM5M2VlMjdmODY5Yzg2NDczZDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCkBAIC03Myw3ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CisgICAgdmlydHVhbCBib29sIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAwYWU5ZmNiZDA1ODhkNGM0ZTFlZjVhZjNj
YzdmMTJiNjEyYmY3OGRhLi44Yjk0ZjkxZDliYTkxNDYyNDRmMDFiNzAzY2IzNDdhOGE5ZDdkMTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJC
YWNrZW5kLmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyaW5nTW9kZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCw2ICs2MSw5
IEBAIHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZl
cigpID0gZGVmYXVsdDsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIAogICAgIHZpcnR1YWwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVz
aENvbnRleHQoKSA9IDA7CiAKQEAgLTEwNCw4ICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYsIEdD
R0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsK
ICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0ID0gMDsKLQogcHJv
dGVjdGVkOgogICAgIEltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDU4
ZmMxNDgzNmQ5MmFhMjAwMTlmMjBmZWVkYzU1NzFlOWFiNWU5NWMuLmNiNTg3MjU2N2YwODgzYjVi
ZDAyZTBlZWNiOGNlZmRiZTcxMGE4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0xMDEsNyArMTAxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJv
b2wsIGJvb2wpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSBmYWxzZTsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzQWNjZWxlcmF0ZWQgPSBmYWxzZTsKIAogcHJvdGVjdGVkOgogICAg
IFdFQkNPUkVfRVhQT1JUIEltYWdlQnVmZmVyQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlT2JzZXJ2ZXIuaAppbmRleCA4YjA4OWU1OTRjMWFmY2NlZTRmZmI1MDcxMTU5Nzg3NDY5NWNi
MmRlLi5iNGQ3MTBhYzY3MzBjODVkZmVlYTc1ZWFiMGYzZGI2Njc2ZjYwZjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCkBAIC00NSwx
MCArNDUsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVkRGF0YVN0YXR1c0No
YW5nZWQoY29uc3QgSW1hZ2UmLCBFbmNvZGVkRGF0YVN0YXR1cykgeyB9OwogICAgIHZpcnR1YWwg
dm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1hZ2UmLCBsb25nIGxvbmcgZGVsdGEpID0g
MDsKIAorICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWREcmF3KGNvbnN0IEltYWdlJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGNhbkRlc3Ryb3lE
ZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFt
ZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJl
Y3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVz
OjpJbnZhbGlkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJv
eWVkKGNvbnN0IEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSA9IDA7CisKICAgICB2aXJ0
dWFsIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqIGNoYW5n
ZVJlY3QgPSBudWxscHRyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKGNvbnN0IEltYWdlJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3NzUwMzIyMzlhNWQ1YWJhYTc2M2Y3
YTI2M2VkN2NiMjQ1OTgyNjUyLi40NTUxNWM1OWExZmYyODRjZDhkMjgwMzgzN2IwODViNTAyMmQ2
YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCkBAIC0xMzAsOCArMTMwLDEwIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNv
ZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSkKICAgICBBU1NF
UlQoZnJhbWVDb3VudCA8PSBtX2ZyYW1lcy5zaXplKCkpOwogCiAgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGZyYW1lQ291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKGluZGV4
ID09IGV4Y2x1ZGVGcmFtZSkKKyAgICAgICAgaWYgKGluZGV4ID09IGV4Y2x1ZGVGcmFtZSB8fCAh
bV9mcmFtZXNbaW5kZXhdLm5hdGl2ZUltYWdlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgaWYgKG1faW1hZ2UgJiYgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpKQorICAgICAgICAg
ICAgbV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpLT5uYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCgq
bV9pbWFnZSwgbV9mcmFtZXNbaW5kZXhdLm5hdGl2ZUltYWdlKCkpOwogICAgICAgICBkZWNvZGVk
U2l6ZSArPSBtX2ZyYW1lc1tpbmRleF0uY2xlYXJJbWFnZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaAppbmRleCAyYWY1NDJkZmVjODQ3YWJjMzcxYWEyZjFlOGU0YjhkZDlmYjExMGU1
Li42NjkwYmVjZGM4YjRhYWU4NTI0YjNmNjgxMGZiOTI2NGM4NWM0OTljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIuaApAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKLQogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDUgKzMzLDMgQEAgZW51bSBSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXJUeXBlIHsgfTsKIHVzaW5nIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyVHlwZT47CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dElt
cGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IGI2NWI0ZDY0NDA2YmViNzZjNDA5ZDNlOGM2
NTQ5NzVjYTlmN2ViNjMuLjhjOGExMDEzYmFmZmRiZTllNDQwYTQyMTJkYTU5MWZiNGRjYmU4OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjc5LDcgKzI3OSwx
MyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3VGlsZWRJ
bWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsbwogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJ
bXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIEdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQorewor
ICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdlKikKIHsKICAgICBVTlVTRURfUEFSQU0o
aW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IGU1ZTIwNzQ4YzZkNzYyMGYx
MGNmMjE1NjYyOGVmN2UwYmU2MDFjN2IuLmY3NjhmODYyMDIzMDczZGQ2NjFkNmE5Zjc1ZDg4OTA2
NTZjNmQ5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC03NCw3ICs3
NCw5IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUs
IEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIENhY2hlZElt
YWdlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBjODA2
NWE5ZWMyNTE0NjQ0Zjc0MDVmOWE1NDEzZjYyMjM1NjI3MTU0Li5kYmMzYjdlYjhiM2QxYWQ4OGQw
YWIzZjBlZWY5MGE3YzhkODVlMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5jcHAKQEAgLTE5MCwxMSArMTkwLDYgQEAgSU9TdXJmYWNlKiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OnN1cmZhY2UoKQogICAgIHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7CiB9CiAKLWJv
b2wgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjppc0FjY2VsZXJhdGVkKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gSEFWRShJT1NVUkZBQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4
IDI0MThmMWQ0NWQ1M2Q0NTkzM2IzOTA0YTI4OGM2MTAxZjE0YmNjMzEuLjMyMzA5NGVhNzk1YzVk
MjQ4M2M4ODQ0MDMxMjRhOTA0MGNjNzQwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5oCkBAIC02Miw5ICs2Miw5IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBn
ZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHB1dEltYWdlRGF0YShBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURhdGEmLCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogICAgIElPU3VyZmFjZSogc3VyZmFjZSgpOwotICAg
IGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSB0cnVlOworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0FjY2VsZXJhdGVkID0gdHJ1ZTsKIAogcHJvdGVjdGVkOgogICAgIHN0
YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb250ZXh0Q29sb3JTcGFjZShjb25zdCBH
cmFwaGljc0NvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggNTA2ZGFiYWIwYjhi
NGI3MzE0NzZiZGY5ZjMwOTU2NzJiOTEyZWYxOS4uMzIyZWNjMWMxYzQxNWNlZjA1OWZjY2ZiYWY1
MDhmOTNhNTkyMTJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTY0LDYgKzY0LDcgQEAg
ZW51bSBjbGFzcyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIERyYXdJbWFnZSwKICAgICBEcmF3
VGlsZWRJbWFnZSwKICAgICBEcmF3VGlsZWRTY2FsZWRJbWFnZSwKKyAgICBEcmF3SW1hZ2VCdWZm
ZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLAogICAgIERyYXdQYXR0ZXJuLAogICAgIERyYXdSZWN0
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuY3BwCmlu
ZGV4IDIzY2MwN2U4YWU0NDJiZGNlYTBkMzY3NGE1YTg1NTFjNjVjZmRjODcuLmQ0NjE3ZDM1MTZm
NGYzZTUxZDc1ZDY0NDM0YTZhMzk0NTdhMDAwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLURyYXdpbmdDb250ZXh0OjpE
cmF3aW5nQ29udGV4dChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGluaXRpYWxDVE0sIFJlY29yZGVyOjpPYnNlcnZlciogb2JzZXJ2ZXIpCitEcmF3
aW5nQ29udGV4dDo6RHJhd2luZ0NvbnRleHQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBSZWNvcmRlcjo6RGVsZWdhdGUqIGRl
bGVnYXRlKQogICAgIDogbV9jb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0
Q29udGV4dCkgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWNvcmRlcj4oZGlzcGxheUxp
c3RDb250ZXh0LCBtX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJl
Y3QoeyB9LCBsb2dpY2FsU2l6ZSksIGluaXRpYWxDVE0sIG9ic2VydmVyKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgbV9kaXNwbGF5TGlz
dCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KHsgfSwgbG9naWNhbFNpemUpLCBp
bml0aWFsQ1RNLCBkZWxlZ2F0ZSk7CiAgICAgfSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCmluZGV4IDdiNjczZjMyYWQ4MTVhNTAwODFiN2U3
YWIxMDgxMzE3MTdmZGU1NDMuLjIyZWQyNTZlODBhZDI5M2EwNTIwNjliNzQzMDg4YTEzNTFmNDdj
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaApA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRHJhd2luZ0Nv
bnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9IHsgfSwgUmVjb3JkZXI6Ok9ic2VydmVy
KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdpbmdDb250ZXh0KGNvbnN0IEZs
b2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSA9
IHsgfSwgUmVjb3JkZXI6OkRlbGVnYXRlKiA9IG51bGxwdHIpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+
KCp0aGlzKS5tX2NvbnRleHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlciYgcmVjb3Jk
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCmluZGV4IDZm
ZDkxMmRmYjhmZTExYzA5OGRkNjEyNmE4Yzg3OGFjNmJhN2FlMDIuLjMyNTk5ZTA2MmQ3Y2Y1OWQx
ZGMyZWFkMDFlNzYwZDY2ZTNmN2VjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgRGlzcGxheUxpc3QgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KLWNs
YXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+
LCBwdWJsaWMgUmVjb3JkZXI6Ok9ic2VydmVyIHsKK2NsYXNzIEltYWdlQnVmZmVyIDogcHVibGlj
IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlciA9IENvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwogCiBwdWJs
aWM6CkBAIC00OCwxMiArNDgsMTIgQEAgcHVibGljOgogCiAgICAgSW1hZ2VCdWZmZXIoc3RkOjp1
bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiYmIGRhdGFCYWNrZW5kLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiAgICAgICAgIDogQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXIoV1RGTW92ZShkYXRhQmFja2Vu
ZCkpCi0gICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0aWFsRHJhd2luZ0NvbnRl
eHRDVE0oc2l6ZSksIHRoaXMpCisgICAgICAgICwgbV9kcmF3aW5nQ29udGV4dChzaXplLCBpbml0
aWFsRHJhd2luZ0NvbnRleHRDVE0oc2l6ZSkpCiAgICAgewogICAgIH0KIAotICAgIEltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLSAgICAgICAgOiBtX2RyYXdpbmdDb250ZXh0KHNp
emUsIGluaXRpYWxEcmF3aW5nQ29udGV4dENUTShzaXplKSwgdGhpcykKKyAgICBJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlY29yZGVyOjpEZWxlZ2F0ZSogZGVsZWdhdGUgPSBu
dWxscHRyKQorICAgICAgICA6IG1fZHJhd2luZ0NvbnRleHQoc2l6ZSwgaW5pdGlhbERyYXdpbmdD
b250ZXh0Q1RNKHNpemUpLCBkZWxlZ2F0ZSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggOGQ4YjI4MTkzODc1YzMxNjZmODFlZDA4ZTNkOTI5
OTYxZjdiODcxNi4uMzAwMzVhMDI0NTJkMGEyYWQxYjRjYzRkYjE1NWQ5MWI3M2I2NGZkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMTEwLDYgKzExMCw4IEBAIHNp
emVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4g
c2l6ZW9mKGRvd25jYXN0PERyYXdUaWxlZEltYWdlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8
RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KGl0ZW0pKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1h
Z2VCdWZmZXI6CisgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0ltYWdlQnVmZmVy
PihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBy
ZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSkpOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAtNzM4LDcgKzc0MCwzMyBAQCBzdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1h
Z2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorRHJhd0ltYWdlQnVmZmVy
OjpEcmF3SW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNl
SWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IERyYXdp
bmdJdGVtKEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIpCisgICAgLCBtX3JlbW90ZVJlc291cmNl
SWRlbnRpZmllcihyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgLCBtX2Rlc3RpbmF0aW9u
UmVjdChkZXN0UmVjdCkKKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV9vcHRpb25z
KG9wdGlvbnMpCit7Cit9CisKK0RyYXdJbWFnZUJ1ZmZlcjo6fkRyYXdJbWFnZUJ1ZmZlcigpID0g
ZGVmYXVsdDsKKwordm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0Cit7CisgICAgLy8gU2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQoreworICAgIHRz
IDw8IHN0YXRpY19jYXN0PGNvbnN0IERyYXdpbmdJdGVtJj4oaXRlbSk7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJyZW1vdGUtcmVzb3VyY2UtaWRlbnRpZmllciIsIGl0ZW0ucmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNv
dXJjZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRp
b25SZWN0KCkpOworICAgIHJldHVybiB0czsKK30KKworRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VUeXBlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5n
SXRlbShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQogICAgICwgbV9pbWFnZShpbWFnZSkKICAg
ICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKQEAgLTc1Miw3ICs3ODAsOCBAQCBEcmF3TmF0aXZl
SW1hZ2U6On5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgRHJhd05hdGl2ZUlt
YWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgY29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0
LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CisgICAgQVNTRVJUKG5hdGl2ZUltYWdlUHRyKCkpOwor
ICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlUHRyKCksIG1faW1hZ2VTaXpl
LCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwogfQogCiBzdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUlt
YWdlJiBpdGVtKQpAQCAtMTQ5Niw2ICsxNTI1LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZTogdHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2UiOyBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZTogdHMgPDwgImRyYXctdGls
ZWQtc2NhbGVkLWltYWdlIjsgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVm
ZmVyOiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6IHRzIDw8ICJkcmF3LW5hdGl2ZS1pbWFnZSI7IGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0ZXJuIjsgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJlY3QiOyBicmVhazsK
QEAgLTE2MDIsNiArMTYzMiw5IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVk
SW1hZ2U6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdUaWxlZFNjYWxlZEltYWdlPihpdGVt
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgor
ICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0pOworICAgICAgICBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8
IGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZDRjYTk4ZTY0ODQ1MWIyNmNiZjY0OTgzNWIx
ZGEyZjNjMjNiNGFmZi4uMjc4NDE5OTU3MjU3MmE4MGY0ZTY5ZWFlMTA2ZDA4NGEwOTMyY2U2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4K
IApAQCAtMTUzMywyOSArMTUzNCwxMTIgQEAgT3B0aW9uYWw8UmVmPERyYXdUaWxlZFNjYWxlZElt
YWdlPj4gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKICAgICBy
ZXR1cm4gRHJhd1RpbGVkU2NhbGVkSW1hZ2U6OmNyZWF0ZSgqaW1hZ2VIYW5kbGUtPmltYWdlLCAq
ZGVzdGluYXRpb24sICpzb3VyY2UsICp0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgKmlt
YWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAorY2xhc3MgRHJhd0ltYWdlQnVmZmVyIDogcHVibGlj
IERyYXdpbmdJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERyYXdJbWFnZUJ1ZmZlcj4g
Y3JlYXRlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERyYXdJbWFnZUJ1ZmZlcihyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIs
IGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5EcmF3SW1hZ2VCdWZmZXIoKTsKKworICAgIFJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90
ZVJlc291cmNlSWRlbnRpZmllcjsgfQorICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX3NyY1JlY3Q7IH0KKyAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBv
cHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBkZWNvZGUo
RGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIERyYXdJbWFnZUJ1ZmZl
cihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwor
CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKworICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsKKyAgICBGbG9h
dFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKKyAgICBJ
bWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgordm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgZW5j
b2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKKyAg
ICBlbmNvZGVyIDw8IG1fb3B0aW9uczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09w
dGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZmZXI+PiBEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4g
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyOworICAgIGlmICghcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlv
bjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGluYXRpb24pCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHNv
dXJjZTsKKyAgICBkZWNvZGVyID4+IHNvdXJjZTsKKyAgICBpZiAoIXNvdXJjZSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdPcHRpb25z
PiBvcHRpb25zOworICAgIGRlY29kZXIgPj4gb3B0aW9uczsKKyAgICBpZiAoIW9wdGlvbnMpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRHJhd0ltYWdlQnVmZmVy
OjpjcmVhdGUoKnJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgKmRlc3RpbmF0aW9uLCAqc291cmNl
LCAqb3B0aW9ucyk7Cit9CisKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5n
SXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHVzaW5nIE5hdGl2ZUltYWdlVHlw
ZSA9IFZhcmlhbnQ8TmF0aXZlSW1hZ2VQdHIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisK
KyAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdl
VHlwZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJh
d05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KSk7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdl
KCk7CiAKKyAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFdURjo6Z2V0X2lm
PFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj4obV9pbWFnZSkpCisgICAgICAgICAgICByZXR1cm4g
KnJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZVB0cigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoYXV0byByZXN1bHQg
PSBXVEY6OmdldF9pZjxOYXRpdmVJbWFnZVB0cj4obV9pbWFnZSkpCisgICAgICAgICAgICByZXR1
cm4gKnJlc3VsdDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgRmxvYXRT
aXplIGltYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAgICAgRmxvYXRS
ZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBk
ZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAg
IEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7
IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPERy
YXdOYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxv
YXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVf
RVhQT1JUIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG1f
aW1hZ2U7CisgICAgTmF0aXZlSW1hZ2VUeXBlIG1faW1hZ2U7CiAgICAgRmxvYXRTaXplIG1faW1h
Z2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3Qg
bV9zcmNSZWN0OwpAQCAtMTU3NSw3ICsxNjU5LDcgQEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9w
dGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlUHRyPiBpbWFnZTsKKyAg
ICBPcHRpb25hbDxOYXRpdmVJbWFnZVR5cGU+IGltYWdlOwogICAgIGRlY29kZXIgPj4gaW1hZ2U7
CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTMwNjYs
NiArMzE1MCw5IEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkU2NhbGVkSW1hZ2U6CiAgICAgICAgIGVuY29kZXIg
PDwgZG93bmNhc3Q8RHJhd1RpbGVkU2NhbGVkSW1hZ2U+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBlbmNvZGVyIDw8
IGRvd25jYXN0PERyYXdJbWFnZUJ1ZmZlcj4oKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNh
c3Q8RHJhd05hdGl2ZUltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzI2Myw2ICsz
MzUwLDEwIEBAIE9wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3VGlsZWRTY2FsZWRJbWFnZTo6ZGVjb2Rl
KGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVt
PihXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdJbWFnZUJ1ZmZlcjo6
ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2Fz
dDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdOYXRpdmVJ
bWFnZTo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CkBAIC0zNDI1LDYgKzM1MTYsNyBAQCBTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0dseXBocykKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3SW1hZ2UpCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkSW1hZ2UpCiBTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1RpbGVkU2NhbGVkSW1hZ2UpCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0ltYWdlQnVmZmVyKQogU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdOYXRpdmVJbWFnZSkKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3UGF0dGVybikKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3UmVjdCkKQEAgLTM0ODcsNiArMzU3
OSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1h
Z2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZSwK
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZFNjYWxlZEltYWdl
LAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyLAog
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4sCiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA2OGQyZjY4MDUxNWVhZTU1OGEwZDRmYmVmNmFiMWEy
N2UwYTA5ZWI0Li41MzNmMDIwYzVlMzEyYzdiYjE4M2IzYTcyODNmNjFmZjJkZTdlZmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkRpc3Bs
YXlMaXN0SXRlbXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTM3LDEwICszOCwx
MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVj
b3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQorUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgaW5pdGlhbENUTSwgRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogR3JhcGhpY3NDb250
ZXh0SW1wbChjb250ZXh0LCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpCiAgICAgLCBt
X2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQotICAgICwgbV9vYnNlcnZlcihvYnNlcnZlcikKKyAg
ICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlM
aXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7
CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xp
cCB9KTsKQEAgLTkzLDggKzk0LDggQEAgc3RhdGljIFJlZjxJdGVtPiBjcmVhdGVTdGF0ZUNoYW5n
ZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMKIAogdm9pZCBS
ZWNvcmRlcjo6d2lsbEFwcGVuZEl0ZW0oY29uc3QgSXRlbSYgaXRlbSkKIHsKLSAgICBpZiAobV9v
YnNlcnZlcikKLSAgICAgICAgbV9vYnNlcnZlci0+d2lsbEFwcGVuZEl0ZW0oaXRlbSk7CisgICAg
aWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPndpbGxBcHBlbmRJdGVtKGl0ZW0p
OwogCiAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpCiAjaWYgVVNFKENHKQpAQCAtMTY2LDgg
KzE2NywyMyBAQCBJbWFnZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdAogICAgIHJldHVybiBJbWFnZURyYXdS
ZXN1bHQ6OkRpZFJlY29yZDsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIFJlY29yZGVyOjpkcmF3SW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogeworICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9kZWxlZ2F0ZS0+
bG9ja1JlbW90ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3SW1hZ2VCdWZmZXI6OmNyZWF0
ZShpbWFnZUJ1ZmZlci5yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wdGlvbnMpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZWNvcmRlcjo6ZHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdl
KiBjYWNoZWRJbWFnZSkKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZSAmJiBjYWNoZWRJbWFnZSkgewor
ICAgICAgICBpZiAoYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZlciA9IG1fZGVsZWdhdGUtPmxv
Y2tSZW1vdGVOYXRpdmVJbWFnZSgqY2FjaGVkSW1hZ2UsIGltYWdlKSkgeworICAgICAgICAgICAg
YXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShyZW1vdGVS
ZXNvdXJjZUlkZW50aWZlciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogICAgIGFwcGVuZEl0ZW1B
bmRVcGRhdGVFeHRlbnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKaW5kZXggMWIyNGMyNmM2NzI4OGY4MTcyNzNhMmQyYWVmMmI0YmM5NmUz
NWM3NS4uNDMwZGE4N2FkYTM2M2Y4ZTVhODhhMTEzN2JhYjYxMzZlYTdlZTgyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yOCwxMiArMjgsMTQgQEAKICNpbmNs
dWRlICJEaXNwbGF5TGlzdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGwuaCIKICNp
bmNsdWRlICJJbWFnZS5oIiAvLyBGb3IgSW1hZ2U6OlRpbGVSdWxlLgorI2luY2x1ZGUgIlJlbW90
ZVJlc291cmNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3Mg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7CitjbGFzcyBDYWNoZWRJbWFnZTsKIGNs
YXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHbHlwaEJ1ZmZlcjsKQEAg
LTUzLDggKzU1LDggQEAgY2xhc3MgUmVjb3JkZXIgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0SW1w
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIGNsYXNzIE9ic2VydmVyOwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBjbGFzcyBEZWxlZ2F0
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEaXNwbGF5
TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0
aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+UmVjb3JkZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcHV0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24gaW5wdXRGb3JtYXQs
IGNvbnN0IEltYWdlRGF0YSYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCk7CkBAIC02Mywx
MCArNjUsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50
KFJlZjxEcmF3aW5nSXRlbT4mJik7CiAKLSAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgY2xhc3Mg
RGVsZWdhdGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0K
KyAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHdp
bGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07CisgICAgICAgIHZpcnR1YWwgYm9vbCBsb2Nr
UmVtb3RlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSB7IHJldHVybiBmYWxzZTsg
fQorICAgICAgICB2aXJ0dWFsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBsb2NrUmVtb3RlTmF0
aXZlSW1hZ2UoQ2FjaGVkSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpIHsg
cmV0dXJuIHsgfTsgfQogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xMDUsNyArMTA5LDggQEAgcHJp
dmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZs
b2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxl
UnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VC
dWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2Vs
ZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBDYWNoZWRJbWFnZSopIG92ZXJyaWRlOwog
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CkBAIC0xODcsNyArMTkyLDcg
QEAgcHJpdmF0ZToKICAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwogCiAgICAgRGlz
cGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7Ci0gICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXI7CisgICAg
RGVsZWdhdGUqIG1fZGVsZWdhdGU7CiAKICAgICBWZWN0b3I8Q29udGV4dFN0YXRlLCAzMj4gbV9z
dGF0ZVN0YWNrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMzA0ZmFjYmFiMTUyMTc5MWRhYTg2ZGIxNTMxNzUz
ZTM4NjcxMDg0ZC4uMmNmNzJlNzdlMjJmMDk0ZGQ2MDlmOWI3ODE5N2M0MjllMzJiY2ZlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKQEAgLTU0OSw3ICs1NDksMTMgQEAgSW1hZ2VEcmF3UmVzdWx0IENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXQKICAgICBy
ZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29u
dGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVs
ZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK2Jvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSopCiB7CiAg
ICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVy
YXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKICAgICAg
ICAgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDU3MmZmMjE2
NmY2ZTk3M2E3NjNiNjdjYjZiYjk2ZjQzZjI2YThkNTAuLjFkNDkwMTNjODljZjEwMTRlYzliMmI5
MjA3ZGVjZWViOTEzYzM4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY3LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFn
ZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
LCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CisKKyAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdl
UHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmLCBXZWJDb3JlOjpDYWNoZWRJbWFnZSopIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaAppbmRleCA3OGQ4MmY4YzQ0YmMzN2QyMTNhODA4ODRhYmU4NGZjZjAyYTA0ZjJiLi4wMDFm
ZWJiNmM5MzZlZTI0NTc0NjA4Y2I3NDhlZWJhZTUyMmE0ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtNzgs
MzEgKzc4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChpdGVtLnR5cGUoKSA9PSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYSkgewotICAgICAgICAgICAgYXBwbHkoc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYSY+KGl0ZW0pLCBjb250
ZXh0KTsKKyAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseVJlc291cmNl
SXRlbShpdGVtLCBjb250ZXh0KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKICAgICB9
CiAKLSAgICB2b2lkIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVk
aWEmIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLSAgICB7Ci0gICAg
ICAgIGF1dG8gcHJvY2VzcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCk7Ci0gICAgICAgIGlmICghcHJvY2VzcykKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBhdXRvIHBsYXllclByb3h5ID0gcHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkoKS5nZXRQcm94eShpdGVtLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlm
ICghcGxheWVyUHJveHkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBwbGF5
ZXIgPSBwbGF5ZXJQcm94eS0+bWVkaWFQbGF5ZXIoKTsKLSAgICAgICAgaWYgKCFwbGF5ZXIpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEo
KnBsYXllciwgaXRlbS5kZXN0aW5hdGlvbigpKTsKLSAgICB9Ci0gICAgCiAgICAgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCmluZGV4IDFlZjI4ZWUyZjI1MjFkY2E1NTRmNDgwNTAyZjcyNzRjOWNjMjli
MzguLjIyZTFjYTMzOGI3MWVlMWU1MjZjODE0NGI5ZTJhZjU3MDFlNWEzZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKQEAgLTcyLDYgKzcyLDU0IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4g
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCitib29sIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJ
dGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgaWYgKGl0ZW0udHlw
ZSgpID09IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKSB7CisgICAgICAg
IGF1dG8mIGRyYXdJdGVtID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3Q6OkRyYXdJbWFn
ZUJ1ZmZlciY+KGl0ZW0pOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVSZXNv
dXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKGRyYXdJdGVtLnJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhjb250ZXh0LCBkcmF3SXRlbS5kZXN0
aW5hdGlvblJlY3QoKSwgZHJhd0l0ZW0uc291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAoaXRlbS50eXBlKCkgPT0g
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpIHsKKyAgICAgICAgYXV0byYg
ZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdl
Jj4oaXRlbSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2Fj
aGVkTmF0aXZlSW1hZ2UoZHJhd0l0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAg
ICAgICBpZiAoIWltYWdlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBkcmF3SXRlbS5pbWFnZVNpemUoKSwgZHJhd0l0
ZW0uZGVzdGluYXRpb25SZWN0KCksIGRyYXdJdGVtLnNvdXJjZSgpLCBkcmF3SXRlbS5vcHRpb25z
KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKGNvbnN0
IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7Cisg
ICAgaWYgKGl0ZW0udHlwZSgpICE9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UGFp
bnRGcmFtZUZvck1lZGlhKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgYXV0byYg
bWVkaWFJdGVtID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JN
ZWRpYSY+KGl0ZW0pOworICAgICAgICAKKyAgICBhdXRvIHByb2Nlc3MgPSBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCk7CisgICAgaWYgKCFwcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIHBsYXllclByb3h5ID0gcHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkoKS5nZXRQcm94eShtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKKyAgICBpZiAoIXBs
YXllclByb3h5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHBsYXllciA9IHBs
YXllclByb3h5LT5tZWRpYVBsYXllcigpOworICAgIGlmICghcGxheWVyKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRp
YUl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBoYW5kbGUsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGhhbmRsZSksIHJlbW90ZVJlc291
cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwpAQCAtMTI0LDYg
KzE3MiwxMCBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dAogICAgICAgICBpbWFnZURhdGEgPSBp
bWFnZUJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgc3JjUmVjdCk7CiAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEp
KSk7CiB9Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVO
YXRpdmVJbWFnZShpbWFnZSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KIAogdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oCmluZGV4IGVmZmJhNDQ5YjE4OGVhMmI1NGQzNjJjMmFjNTRjMjhmYzBjY2IzZWQuLjNlYjRi
N2QxYWIxMDU5M2UzYThhMDk4MDg4ZDllOTZlM2M1ZjNjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aApAQCAtNDIsNiArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3Bs
YXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OworY2xhc3MgSXRlbTsKIH0KIGNsYXNzIEZsb2F0
U2l6ZTsKIGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CkBAIC02MSw2ICs2MiwxMCBA
QCBwdWJsaWM6CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkgY29uc3Q7CiAKKyAgICAvLyBSZW5kZXJpbmcgb3BlcmF0aW9ucy4KKyAg
ICBib29sIGFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
JiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CisgICAgYm9vbCBhcHBseU1lZGlhSXRlbShj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYpOworCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICB2b2lkIGltYWdlQnVmZmVy
QmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdh
c0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKQEAgLTgxLDYgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZs
dXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jiwg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZsdXNoRGlzcGxh
eUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jiwg
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VE
YXRhUmVmZXJlbmNlJiYpPiYmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIG1fcmVtb3RlUmVzb3VyY2VD
YWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggMDM1ZDZi
YjQ2MmMxYWMyYzkyNjYxMjAwMzU4NTI3NTc2NzhjMzAzYS4uOTZjMTllOTA4YmU2M2EyNTAyNDUy
MjQxZTgyZDczNWRjZmFmNGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4KQEAgLTI3LDYgKzI3LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCBOb3RSZWZDb3VudGVkIHsKICAgICB2b2lkIEZsdXNoRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHZvaWQgRmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxh
eUxpc3QsIFdlYktpdDo6RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQogICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgLT4g
KElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lk
IENhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAg
dm9pZCBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4
IGFkMDQ3MjYyNTIxOTY3OTQ2NDk0YzhhYzdhNTQ5MDMxMGE3ZDdiMTIuLjJlZjRjMDJkNjU4MmRm
YTdkYWI0NDU5YjA4NjAxZmViNDI1MDViMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTM3LDE1
ICszNywyOCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlSW1hZ2VCdWZmZXIoUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cgogICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLVdlYkNvcmU6OkltYWdlQnVmZmVy
KiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorSW1hZ2VCdWZmZXIqIFJlbW90ZVJl
c291cmNlQ2FjaGU6OmNhY2hlZEltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdl
dChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2Fj
aGU6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9uYXRpdmVJbWFnZXMuYWRkKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwg
aW1hZ2UpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7Cit9CisKK05hdGl2ZUltYWdlUHRyIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZE5hdGl2
ZUltYWdlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
Cit7CisgICAgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOworfQorCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJj
ZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewog
ICAgIGlmIChtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSkK
ICAgICAgICAgcmV0dXJuOworICAgIGlmIChtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOwogICAgIC8vIENhY2hpbmcgdGhlIHJl
bW90ZSByZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0Lgog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKaW5kZXggNGVkOGNlMGFj
YzE1ZGYzNzMxYzdmMWE2ODRjM2RkMDg5NmM1NjA4Zi4uNzE2YzEzZDE5NGFhN2JmOGY3YmUzYWY1
OGJjYzNiYmQzODJlNGVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC00NCwxMiArNDQsMTYgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbW90ZVJlc291cmNl
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKICAg
ICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVtb3Rl
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGNhY2hlZE5hdGl2ZUltYWdlKFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKICAgICB1
c2luZyBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47
CisgICAgdXNpbmcgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyPjsKIAogICAg
IFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKKyAgICBSZW1vdGVOYXRp
dmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CmluZGV4IDc5NmRiNjk5NmVlZGZlNWI3ZTkyODAwMTM3MjA1NGNmNjljMzgw
NDYuLjdhM2IyMzAwYjdjMzY4OTBmZmMyNTNiYmEwNTU0YWYyMDM2MmY1ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dApAQCAtNTU3LDggKzU1Nyw4IEBAIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAKLVdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKK1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQ
cml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNmJkOWFjNDVmMzFhYzQzYzJmYzA5NjRhZjVmZGRlNGE3OGU2ODQ4Ny4uNzQ4Njkw
MzQ4OGNhNjNhMTU0YTFlOWMwMTZlNThmY2M4ZThiZWE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjI0LDggKzQyMjQsNiBAQAog
CQk3MUE2NzZBNTIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25p
emVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUb3VjaEFj
dGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJl
UmVjb2duaXplci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFGQjgxMEEyMjYw
NjI3QTAwMzIzNjc3IC8qIFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVTaW11bGF0ZWRNb3Vz
ZUV2ZW50c0Rpc3BhdGNoUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
Mjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcyMjc4MDBDMjQwOTdBMDIwMDdEMzc2QiAvKiBSZW1v
dGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNzIyNzgwMEQyNDA5N0EwMjAwN0QzNzZCIC8qIFJlbW90ZUltYWdlQnVm
ZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVJbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2
RDU2REQyNTNBNjQ4MTAwMDJFRjkwIC8qIFJlbW90ZVJlc291cmNlQ2FjaGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyNkQ1NkRFMjUzQTY0ODEwMDAyRUY5MCAvKiBSZW1vdGVSZXNvdXJjZUNhY2hl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlc291cmNlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI3QTdGMzQyNDA3ODU3RDAwNEQyOTMxIC8qIEltYWdlQnVmZmVyU2hh
cmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIzNyw2ICs0MjM1LDggQEAKIAkJNzI3QTdGNDkyNDA4
QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29sb3JQaWNrZXJNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI4RTg2RjAxNzk1MTg4QzAwODc4NzlFIC8qIFdlYkNvbG9yUGlj
a2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29s
b3JQaWNrZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQjUzMTU3MjUz
QzFFNEQwMDQ5Mjk1QSAvKiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzJCNTMxNTgyNTNDMUU0RDAwNDkyOTVBIC8qIFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIFdL
V2Vic2l0ZURhdGFTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dl
YnNpdGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzUx
ODdDQ0Y5RjAwQzM5QzlFIC8qIFdLV2Vic2l0ZURhdGFTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFTdG9yZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyRDQxODdEMUMwMTAwQzM5QzlFIC8qIFdLV2Vic2l0
ZURhdGFTdG9yZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
V2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04MTM4LDEyICs4MTM4LDEyIEBACiAJCQkJNzI3QTdGMzYyNDA3ODhGMDAwNEQyOTMxIC8qIElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5oICovLAogCQkJCTcyN0E3RjM4MjQwNzg4
RjAwMDREMjkzMSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZC5oICovLAog
CQkJCTcyMjc4MDBCMjQwOEJEN0QwMDdEMzc2QiAvKiBQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCAqLywKLQkJCQk3MjI3ODAwQzI0MDk3QTAyMDA3RDM3NkIgLyogUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcCAqLywKLQkJCQk3MjI3ODAwRDI0MDk3QTAyMDA3
RDM3NkIgLyogUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmggKi8sCiAJCQkJ
NzI3QTdGNDkyNDA4QUVFNjAwNEQyOTMxIC8qIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCAqLywK
IAkJCQk1NTA2NDA5RDI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcCAqLywKIAkJCQk1NTA2NDA5RTI0MDcxNjA5MDBBQUUwNDUgLyogUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmggKi8sCiAJCQkJNTUwNjQwQTAyNDA3MTlFMTAwQUFFMDQ1IC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk3MkI1MzE1NzI1
M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCAqLywKKwkJCQk3
MkI1MzE1ODI1M0MxRTREMDA0OTI5NUEgLyogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggKi8s
CiAJCQkJNTUwNjQwOUYyNDA3MTk2QTAwQUFFMDQ1IC8qIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUGxhdGZvcm1S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggOWFmZjA4OGUzN2NhNzZhN2Y4NjRhZTdlNDJi
YmI3MDA0ZjFmMTUyMy4uMDAwNjBlYzEwMWMyNTRlMmI1OGE3NjQ2YTRhNDI0ZjNkMDI0NDllMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9QbGF0Zm9y
bVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1BsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0zNyw0ICsz
NywxNCBAQCB1c2luZyBBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHkgPSBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5PEFjY2VsZXJhdGVkSW1hZwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlVuYWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIHsgcmV0dXJuIGltYWdlQnVmZmVyLnJlbW90ZVJl
c291cmNlSWRlbnRpZmllcigpICYmICFpbWFnZUJ1ZmZlci5pc0FjY2VsZXJhdGVkKCk7IH0KK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2lmIEhBVkUoSU9TVVJGQUNFKQorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OkFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImIGltYWdlQnVmZmVyKSB7IHJldHVybiBpbWFnZUJ1ZmZlci5yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIoKSAmJiBpbWFnZUJ1ZmZlci5pc0FjY2VsZXJhdGVkKCk7IH0KK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRU5EKCkKKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTU2MmEzNjhlNjllNDIzMGU3MjYyYzI2
MzZkZjI4NmQ3NDZlYWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlclByb3h5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlbW90ZUlt
YWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQotCi0jaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+Ci0jaW5jbHVk
ZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpS
ZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHkoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCi17Ci0gICAgLy8gQ3Jl
YXRlIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5LgotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJ
bWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCkpOwotfQotCi1SZW1vdGVJbWFnZUJ1
ZmZlck1lc3NhZ2VIYW5kbGVyUHJveHk6On5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVy
UHJveHkoKQotewotICAgIC8vIFJlbGVhc2UgdGhlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkuCi0g
ICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9yZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIoKSk7Ci19Ci0KLVJlZlB0cjxJbWFnZURhdGE+IFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eTo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAotewotICAgIElQQzo6
SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YVJlZmVyZW5jZTsKLSAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS0+c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OkdldEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEltYWdlRGF0
YTo6UmVwbHkoaW1hZ2VEYXRhUmVmZXJlbmNlKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHktPnJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcyk7Ci0gICAgcmV0dXJuIGltYWdl
RGF0YVJlZmVyZW5jZS5idWZmZXIoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHk6OndhaXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCkKLXsK
LSAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgJiYgIWlzQmFja2VuZENyZWF0
ZWQoKSkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JJbWFn
ZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7Ci19Ci0KLXZvaWQgUmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5Ojp3YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgp
Ci17Ci0gICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5ICYmIGlzUGVuZGluZ0Zs
dXNoKCkpCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRmx1
c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KQotewotICAgIGlmICghbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBUcmFjZVNjb3BlIHRy
YWNpbmdTY29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VC
dWZmZXJFbmQpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0
LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LT5yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpKTsKLSAgICBkaXNwbGF5TGlzdC5jbGVh
cigpOwotfQotCi12b2lkIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eTo6Zmx1
c2hEaXNwbGF5TGlzdEFuZFdhaXRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiBkaXNwbGF5TGlzdCkKLXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShGbHVz
aFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJFbmQsIDEpOwot
ICAgIG1fc2VudEZsdXNoSWRlbnRpZmllciA9IERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpOwotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGRp
c3BsYXlMaXN0LCBtX3NlbnRGbHVzaElkZW50aWZpZXIsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKSwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKCkpOwotICAgIGRpc3BsYXlMaXN0LmNsZWFyKCk7Ci0gICAgd2FpdEZvckZsdXNoRGlz
cGxheUxpc3RXYXNDb21taXR0ZWQoKTsKLX0KLQotdm9pZCBSZW1vdGVJbWFnZUJ1ZmZlck1lc3Nh
Z2VIYW5kbGVyUHJveHk6OmNvbW1pdEZsdXNoQ29udGV4dChEaXNwbGF5TGlzdEZsdXNoSWRlbnRp
ZmllciBmbHVzaElkZW50aWZpZXIpCi17Ci0gICAgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllciA9
IGZsdXNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlck1l
c3NhZ2VIYW5kbGVyUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlhMDI2
YTgxMjk4Nzk2ZTdiZDM1ZmE5NmVlZTkwNGRlNGJmYjVmZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eS5oCisrKyAvZGV2L251
bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLQotI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXpl
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL1JlbmRlcmluZ01vZGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgSW1hZ2VEYXRhOwotZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhf
dDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTsKLQotY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5IHsK
LXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5SZW1vdGVJbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyUHJv
eHkoKTsKLQotICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmll
cjsgfQotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuIFNlZSBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLm1lc3NhZ2VzLmluLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVCYWNrZW5kKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSkgPSAwOwotCi0gICAgdm9pZCBjb21taXRGbHVz
aENvbnRleHQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIpOwotCi1wcm90ZWN0ZWQ6Ci0gICAg
UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2Vi
Q29yZTo6Q29sb3JTcGFjZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNCYWNrZW5kQ3JlYXRlZCgpIGNvbnN0ID0gMDsKLSAgICBib29sIGlzUGVu
ZGluZ0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9zZW50Rmx1c2hJZGVudGlmaWVyICE9IG1fcmVj
ZWl2ZWRGbHVzaElkZW50aWZpZXI7IH0KLQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+
IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICB2b2lkIHdh
aXRGb3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7Ci0gICAgdm9pZCB3YWl0Rm9yRmx1
c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpOwotCi0gICAgLy8gTWVzc2FnZXMgdG8gYmUgc2Vu
dC4gU2VlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5tZXNzYWdlcy5pbi4KLSAgICB2b2lk
IGZsdXNoRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jik7Ci0g
ICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0QW5kV2FpdENvbW1pdChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmKTsKLQotcHJpdmF0ZToKLSAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0gICAgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHsg
V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Ci0KLSAgICBE
aXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3NlbnRGbHVzaElkZW50aWZpZXI7Ci0gICAgRGlz
cGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAyMGZiZjgxYzk4MjU1MmVmNzZiYjZjZDE1
ZGMzYTFlOWQzODgwZWMzLi45MTE2ZWRmNmE0ZDQ1NjJjNzEyZTBmMmJkNTkzYWRmZDk3NmYzYTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdl
SGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaXNwbGF5TGlzdFJlY29yZGVyLmg+CkBAIC0zNyw1NCArMzYsNzEgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBCYWNrZW5kVHlwZT4KLWNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFJl
bW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94eSB7CitjbGFzcyBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5IDogcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNr
ZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRl
IHsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAgICAgdXNpbmcgQmFzZURpc3BsYXlM
aXN0SW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlcjo6bV9kcmF3aW5nQ29udGV4dDsKIAogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAg
IHsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVCYWNrZW5kU2l6ZShzaXplLCBy
ZXNvbHV0aW9uU2NhbGUpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4o
bmV3IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PihuZXcgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eShzaXplLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKTsK
ICAgICB9CiAKICAgICB+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSgpCiAgICAgeworICAgICAgICBp
ZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5yZWxlYXNlSW1hZ2VCdWZm
ZXIobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotcHJvdGVjdGVkOgotICAg
IFJlbW90ZUltYWdlQnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgOiBCYXNlRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlcihzaXplKQotICAgICAgICAsIFJlbW90ZUltYWdlQnVmZmVyTWVzc2Fn
ZUhhbmRsZXJQcm94eShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICB7Ci0gICAgfQorICAgIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcjsgfQog
Ci0gICAgdm9pZCBjcmVhdGVCYWNrZW5kKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNh
bFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGhhbmRsZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGNyZWF0ZUJhY2tlbmQoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSBj
b2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKCFtX2JhY2tlbmQpOwogICAgICAgICBtX2JhY2tlbmQgPSBCYWNrZW5kVHlwZTo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNw
YWNlLCBXVEZNb3ZlKGhhbmRsZSkpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzQmFja2VuZENy
ZWF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KKworICAg
IHZvaWQgY29tbWl0Rmx1c2hEaXNwbGF5TGlzdChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBm
bHVzaElkZW50aWZpZXIpCisgICAgeworICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVy
ID0gZmx1c2hJZGVudGlmaWVyOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFJlbW90ZUltYWdl
QnVmZmVyUHJveHkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgOiBC
YXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcihzaXplLCB0aGlzKQorICAgICAgICAsIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KG1ha2VXZWFrUHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkpCisgICAgeworICAgICAgICBBU1NFUlQobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpOworICAgIH0KKworICAgIGJvb2wgaXNQZW5kaW5nRmx1c2goKSBjb25zdCB7IHJldHVybiBt
X3NlbnRGbHVzaElkZW50aWZpZXIgIT0gbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsgfQogCiAg
ICAgQmFja2VuZFR5cGUqIGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7Ci0gICAgICAgIGlmICghbV9iYWNrZW5kKQotICAgICAgICAgICAgY29uc3RfY2FzdDxSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpLlJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRs
ZXJQcm94eTo6d2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKKyAgICAgICAg
aWYgKCFtX2JhY2tlbmQgJiYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+d2FpdEZvckltYWdlQnVmZmVyQmFj
a2VuZFdhc0NyZWF0ZWQoKTsKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKICAgICB9
CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgeworICAgICAgICBpZiAoIW1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAg
ICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkqPih0aGlzKS0+bV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpOwotICAgICAgICBjb25z
dF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkqPih0aGlzKS0+UmVtb3RlSW1hZ2VCdWZmZXJN
ZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKLSAgICAg
ICAgYXV0byByZXN1bHQgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkqPih0aGlz
KS0+UmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpnZXRJbWFnZURhdGEob3V0
cHV0Rm9ybWF0LCBzcmNSZWN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgp
KSB7CisgICAgICAgICAgICBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkmPigqdGhp
cykuZmx1c2hEaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CisgICAgICAgICAgICBkaXNwbGF5TGlz
dC5jbGVhcigpOworICAgICAgICB9CisKICAgICAgICAgLy8gZ2V0SW1hZ2VEYXRhIGlzIHN5bmNo
cm9ub3VzLCB3aGljaCBtZWFucyB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIHRoZSBDb21taXRJbWFn
ZUJ1ZmZlckZsdXNoQ29udGV4dCBtZXNzYWdlLgotICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmdldEltYWdlRGF0YShv
dXRwdXRGb3JtYXQsIHNyY1JlY3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9
CiAKICAgICB2b2lkIHB1dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQ
b2ludCA9IHsgfSwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0g
V2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgb3ZlcnJpZGUK
QEAgLTEwNCwxNyArMTIwLDYwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZsdXNoRHJhd2luZ0Nv
bnRleHQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byYgZGlzcGxheUxpc3QgPSBtX2Ry
YXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCk7Ci0gICAgICAgIGlmIChkaXNwbGF5TGlzdC5pdGVt
Q291bnQoKSkKLSAgICAgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJQcm94
eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZFdhaXRDb21taXQoZGlzcGxheUxpc3QpOworICAgICAgICBp
ZiAoIWRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpIHx8ICFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdT
Y29wZShGbHVzaFJlbW90ZUltYWdlQnVmZmVyU3RhcnQsIEZsdXNoUmVtb3RlSW1hZ2VCdWZmZXJF
bmQsIDEpOworICAgICAgICBtX3NlbnRGbHVzaElkZW50aWZpZXIgPSBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+Zmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChkaXNwbGF5TGlzdCwgbV9y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgICAgIC8vIFdhaXQgZm9yIG91ciBEaXNw
bGF5TGlzdCB0byBiZSBmbHVzaGVkIGJ1dCBkbyBub3QgaGFuZy4KKyAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBtYXhXYWl0aW5nRmx1c2ggPSAzOworICAgICAgICBmb3IgKHVuc2ln
bmVkIG51bVdhaXRpbmdGbHVzaCA9IDA7IG51bVdhaXRpbmdGbHVzaCA8IG1heFdhaXRpbmdGbHVz
aCAmJiBpc1BlbmRpbmdGbHVzaCgpOyArK251bVdhaXRpbmdGbHVzaCkKKyAgICAgICAgICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT53YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0Nv
bW1pdHRlZCgpOworCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkoKS51bmxvY2tSZW1vdGVSZXNvdXJjZXNGb3JSZW1vdGVDbGll
bnQobV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBkaXNwbGF5TGlzdC5jbGVh
cigpOworICAgIH0KKworICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pdGVtQ291bnQoKSB8fCAhbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVHJhY2VTY29wZSB0
cmFjaW5nU2NvcGUoRmx1c2hSZW1vdGVJbWFnZUJ1ZmZlclN0YXJ0LCBGbHVzaFJlbW90ZUltYWdl
QnVmZmVyRW5kKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmZsdXNo
RGlzcGxheUxpc3QoZGlzcGxheUxpc3QsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSgpLnVubG9ja1JlbW90ZVJlc291cmNlc0ZvclJlbW90ZUNsaWVudChtX3JlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CiAgICAgfQotICAgIAorCiAgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBjb25zdGV4cHIgc2l6ZV90IERpc3BsYXlMaXN0QmF0Y2hTaXplID0gNTEyOwogICAgICAgICBh
dXRvJiBkaXNwbGF5TGlzdCA9IG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKTsKLSAgICAg
ICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3VudCgpID49IERpc3BsYXlMaXN0QmF0Y2hTaXplKQot
ICAgICAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5OjpmbHVzaERp
c3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKKyAgICAgICAgaWYgKGRpc3BsYXlMaXN0Lml0ZW1Db3Vu
dCgpIDwgRGlzcGxheUxpc3RCYXRjaFNpemUgfHwgIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZsdXNoRGlzcGxheUxpc3QoZGlz
cGxheUxpc3QpOworICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KKworICAgIGJv
b2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
cikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkubG9ja1Jl
bW90ZUltYWdlQnVmZmVyRm9yUmVtb3RlQ2xpZW50KGltYWdlQnVmZmVyLCBtX3JlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgfQorCisgICAgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIGxvY2tSZW1vdGVOYXRpdmVJbWFnZShXZWJDb3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVk
SW1hZ2UsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLmxvY2tSZW1vdGVOYXRpdmVJbWFnZUZv
clJlbW90ZUNsaWVudChjYWNoZWRJbWFnZSwgaW1hZ2UsIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB9CisKKyAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBtX3NlbnRGbHVz
aElkZW50aWZpZXI7CisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZs
dXNoSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbV9y
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgeyBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBiMTQ2
MWI0ODIxNDhkMmI3NWI0MGYwOThkOTQwY2RlMTBhYjRmZmNlLi5hZDdmMDg4YzkyNzNkM2I4Mjgx
NjExZjRkMGI5OGJmZDE1YWYxOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJJbWFnZURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHlNZXNzYWdlcy5oIgpAQCAtODgs
MzggKzg5LDgwIEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yRmx1
c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIFNob3VsZEFjY2VsZXJhdGUgc2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CisgICAgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXI7CisKICAgICBpZiAoc2hvdWxkQWNjZWxlcmF0ZSA9PSBTaG91bGRB
Y2NlbGVyYXRlOjpZZXMpIHsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBBY2NlbGVy
YXRlZFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpS
ZW1vdGVBY2NlbGVyYXRlZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsK
LSAgICAgICAgICAgIG1faW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlck1hcC5hZGQoaW1hZ2VCdWZm
ZXItPnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIH0KKyAgICAgICAgcmVuZGVyaW5n
TW9kZSA9IFJlbmRlcmluZ01vZGU6OlJlbW90ZUFjY2VsZXJhdGVkOworICAgICAgICBpbWFnZUJ1
ZmZlciA9IEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJl
c29sdXRpb25TY2FsZSwgKnRoaXMpOworICAgIH0KKworICAgIGlmICghaW1hZ2VCdWZmZXIpIHsK
KyAgICAgICAgcmVuZGVyaW5nTW9kZSA9IFJlbmRlcmluZ01vZGU6OlJlbW90ZVVuYWNjZWxlcmF0
ZWQ7CisgICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVy
UHJveHk6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsICp0aGlzKTsKICAgICB9CiAKLSAg
ICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5OjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6UmVtb3RlVW5hY2NlbGVyYXRlZCwgcmVz
b2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCAqdGhpcykpIHsKLSAgICAgICAgbV9pbWFnZUJ1ZmZl
ck1lc3NhZ2VIYW5kbGVyTWFwLmFkZChpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKCksIGltYWdlQnVmZmVyLmdldCgpKTsKKyAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZm
ZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBpbWFn
ZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlci0+cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlQnVm
ZmVyLmdldCgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogICAgIH0KIAorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCitSZWZQdHI8SW1h
Z2VEYXRhPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldEltYWdlRGF0YShBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBJ
UEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGFSZWZlcmVuY2U7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldEltYWdlRGF0YShvdXRwdXRGb3Jt
YXQsIHNyY1JlY3QsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpHZXRJbWFnZURhdGE6OlJlcGx5KGltYWdlRGF0YVJlZmVyZW5jZSks
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIDFfcyk7CisgICAgcmV0dXJuIGltYWdlRGF0
YVJlZmVyZW5jZS5idWZmZXIoKTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmZsdXNoRGlzcGxheUxpc3QoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiBkaXNw
bGF5TGlzdCwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGbHVzaERp
c3BsYXlMaXN0KGRpc3BsYXlMaXN0LCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KKworRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNv
bnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgRGlzcGxheUxpc3RG
bHVzaElkZW50aWZpZXIgc2VudEZsdXNoSWRlbnRpZmllciA9IERpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OkZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoZGlzcGxheUxpc3QsIHNlbnRGbHVzaElk
ZW50aWZpZXIsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpOworICAgIHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOworfQorCit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3Jl
OjpOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZShpbWFnZSwgcmVtb3RlUmVzb3VyY2VJ
ZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBDcmVh
dGVJbWFnZUJ1ZmZlciBtZXNzYWdlIHNob3VsZCBoYXZlIGJlZW4gcmVjZWl2ZWQgYmVmb3JlIHRo
aXMgb25lLgotICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXAu
cmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChmb3Vu
ZCwgZm91bmQpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJl
bGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAg
IGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VIYW5kbGVyTWFwLmdl
dChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1ZmZlci0+Y3JlYXRl
QmFja2VuZChsb2dpY2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIocmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
aWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgIGRvd25jYXN0PEFjY2Vs
ZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVyKS5jcmVhdGVCYWNrZW5k
KGxvZ2ljYWxTaXplLCBiYWNrZW5kU2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBX
VEZNb3ZlKGhhbmRsZSkpOworICAgIGVsc2UKKyAgICAgICAgZG93bmNhc3Q8VW5hY2NlbGVyYXRl
ZFJlbW90ZUltYWdlQnVmZmVyUHJveHk+KCppbWFnZUJ1ZmZlcikuY3JlYXRlQmFja2VuZChsb2dp
Y2FsU2l6ZSwgYmFja2VuZFNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgV1RGTW92
ZShoYW5kbGUpKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3RXYXNDb21taXR0ZWQoRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJ
ZGVudGlmaWVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyKQogewotICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZlck1lc3NhZ2VI
YW5kbGVyTWFwLmdldChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICBpbWFnZUJ1
ZmZlci0+Y29tbWl0Rmx1c2hDb250ZXh0KGZsdXNoSWRlbnRpZmllcik7CisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGltYWdlQnVmZmVyLT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAg
IGRvd25jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdlQnVmZmVy
KS5jb21taXRGbHVzaERpc3BsYXlMaXN0KGZsdXNoSWRlbnRpZmllcik7CisgICAgZWxzZQorICAg
ICAgICBkb3duY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4oKmltYWdl
QnVmZmVyKS5jb21taXRGbHVzaERpc3BsYXlMaXN0KGZsdXNoSWRlbnRpZmllcik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgK
aW5kZXggOWQyOTAwMjNkNDk3MjFlYWQ2Y2I5ODc5OWQyNmY1YThkMGVkNGRiZS4uYmRiMTgwOTg5
MDAzYmYwN2E1NTllMWM5OGEwZWViOGJlMjg5NTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCkBAIC0zMSwxNiArMzEsMjQgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSAiUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFu
ZGxlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5j
bHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Nv
bG9yU3BhY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZVJlc291cmNlSWRl
bnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5oPgotI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKK2NsYXNzIERpc3BsYXlMaXN0OworY2xh
c3MgSXRlbTsKK30KK2NsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEltYWdlRGF0YTsKK2VudW0gY2xh
c3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENvbG9yU3Bh
Y2UgOiB1aW50OF90OworZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogdWludDhfdDsKK2VudW0g
Y2xhc3MgU2hvdWxkQWNjZWxlcmF0ZSA6IGJvb2w7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkKQEAgLTUyLDcgKzYwLDcgQEAgcHVi
bGljOgogCiAgICAgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogCi0gICAgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOyB9CisgICAgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5JiByZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKSB7IHJldHVybiBtX3JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTsgfQogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyLgogICAg
IElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlk
ZTsKQEAgLTYxLDcgKzY5LDEyIEBAIHB1YmxpYzoKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKKyAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6U2hvdWxkQWNjZWxlcmF0ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJl
bW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0KGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllcik7CisgICAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVOYXRp
dmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJlbW90ZVJl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgd2FpdEZvckltYWdlQnVm
ZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKQEAgLTc0LDggKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1
c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIHVzaW5nIEltYWdlQnVmZmVy
TWVzc2FnZUhhbmRsZXJNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciwgUmVtb3RlSW1hZ2VCdWZmZXJNZXNzYWdlSGFuZGxlclByb3h5Kj47Ci0gICAgSW1hZ2VC
dWZmZXJNZXNzYWdlSGFuZGxlck1hcCBtX2ltYWdlQnVmZmVyTWVzc2FnZUhhbmRsZXJNYXA7Cisg
ICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsg
KnRoaXMgfTsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIHsgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDVj
OGZjM2VhMzc5NTU2Y2RjNmExMjUwZDUxYzYyZjVlNzAyZWI0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRJbWFnZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKK3sKK30KKwordm9pZCBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk6OmNhY2hlSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
IGlkZW50aWZpZXIsIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBhdXRvIGFkZFJl
c3VsdCA9IG1faW1hZ2VCdWZmZXJzLmFkZChpZGVudGlmaWVyLCBpbWFnZUJ1ZmZlcik7CisgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworSW1h
Z2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1faW1hZ2VC
dWZmZXJzLmdldChpZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKQoreworICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVycy5yZW1v
dmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBm
b3VuZCk7CisKKyAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNv
dXJjZSB1bmxlc3MgaXQncyBwZW5kaW5nIHJlcGxheWluZyBiYWNrLgorICAgIHJlbGVhc2VSZW1v
dGVSZXNvdXJjZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2UmIGNhY2hlZEltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit7Cisg
ICAgYXV0byBpdGVyID0gbV9jYWNoZWRJbWFnZXMuZmluZCgmY2FjaGVkSW1hZ2UpOworICAgIGlm
IChpdGVyID09IG1fY2FjaGVkSW1hZ2VzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBSZW1vdmUgdGhlIHJlc291cmNlIGZyb20gdGhlIGNhY2hlLgorICAgIGF1dG8gcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyID0gaXRlci0+dmFsdWUudGFrZShpbWFnZSk7CisgICAgaWYgKCFyZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRlbGwgdGhl
IEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlIHVubGVzcyBpdCdzIHBlbmRpbmcg
cmVwbGF5aW5nIGJhY2suCisgICAgcmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNl
SWRlbnRpZmllcik7CisKKyAgICAvLyBSZW1vdmUgKnRoaXMqIGZyb20gYmVpbmcgYSBjbGllbnQg
b2YgYWNoZWRJbWFnZSwgaWYgdGhlcmUgaXMgbm8gTmF0aXZlSW1hZ2VzIGNhY2hlZCBmb3IgaXQu
CisgICAgaWYgKGl0ZXItPnZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBpdGVyLT5rZXktPnJl
bW92ZUNsaWVudCgqdGhpcyk7CisgICAgICAgIG1fY2FjaGVkSW1hZ2VzLnJlbW92ZShpdGVyKTsK
KyAgICB9Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpsb2NrUmVtb3RlSW1h
Z2VCdWZmZXJGb3JSZW1vdGVDbGllbnQoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWlt
YWdlQnVmZmVyLnJlbW90ZVJlc291cmNlSWRlbnRpZmllcigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgaWYgKGNhY2hlZEltYWdlQnVmZmVyKGltYWdlQnVmZmVyLnJlbW90ZVJl
c291cmNlSWRlbnRpZmllcigpKSAhPSAmaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBsb2NrUmVt
b3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnQoaW1hZ2VCdWZmZXIucmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKCksIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVybiB0cnVlOworfQor
CitSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpsb2Nr
UmVtb3RlTmF0aXZlSW1hZ2VGb3JSZW1vdGVDbGllbnQoV2ViQ29yZTo6Q2FjaGVkSW1hZ2UmIGNh
Y2hlZEltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90ZVJlc291cmNlSWRl
bnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8mIG5hdGl2ZUltYWdl
cyA9IG1fY2FjaGVkSW1hZ2VzLmVuc3VyZSgmY2FjaGVkSW1hZ2UsIFsmXSB7CisgICAgICAgIGNh
Y2hlZEltYWdlLmFkZENsaWVudCgqdGhpcyk7CisgICAgICAgIHJldHVybiBSZW1vdGVOYXRpdmVJ
bWFnZUhhc2hNYXAoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBhdXRvIHJlbW90
ZVJlc291cmNlSWRlbnRpZmllciA9IG5hdGl2ZUltYWdlcy5lbnN1cmUoaW1hZ2UsIFsmXSB7Cisg
ICAgICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlLCByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
ICAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKKworICAgIGxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudChyZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVybiByZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXI7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
Ojpsb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgLy8gQWRkIHRoZSAicmVzb3VyY2UgLT4gY2xp
ZW50IiBkZXBlbmRlbmN5IGluIG1fbG9ja2VkUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRz
LgorICAgIGF1dG8mIGNsaWVudHMgPSBtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xp
ZW50cy5lbnN1cmUocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBbJl0geworICAgICAgICByZXR1
cm4gUmVtb3RlQ2xpZW50c0hhc2hTZXQoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAg
ICBjbGllbnRzLmFkZChyZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIEFTU0VSVCghbV9wZW5k
aW5nVW5sb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzLmNvbnRhaW5zKHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikpOworCisgICAgLy8gSWYgd2UgaGF2ZSByZWNvcmRlZCByZXNvdXJj
ZSAtPiBjbGllbnQgZGVwZW5kZW5jeSBiZWZvcmUgaW4gbV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZv
clJlbW90ZUNsaWVudHMsIG1vdmUgdGhpcworICAgIC8vIGRlcGVuZGVuY3kgdG8gbV9wZW5kaW5n
VW5sb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzLiBPdGhlcndpc2UgcmVtb3ZlIHRo
ZSByZXNvdXJjZSBpbiB0aGUgR1BVIFByb2Nlc3MuCisgICAgaWYgKG1fbG9ja2VkUmVtb3RlUmVz
b3VyY2VGb3JSZW1vdGVDbGllbnRzLmNvbnRhaW5zKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikp
CisgICAgICAgIG1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy5h
ZGQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9yUmVt
b3RlQ2xpZW50cy50YWtlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpOworICAgIGVsc2UKKyAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVsZWFzZVJlbW90ZVJlc291cmNl
KHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5Ojp1bmxvY2tSZW1vdGVSZXNvdXJjZXNGb3JSZW1vdGVDbGllbnQoUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW1vdmVS
ZW1vdGVDbGllbnQgPSBbJl0oUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCYgcmVtb3RlUmVz
b3VyY2VGb3JSZW1vdGVDbGllbnRzLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xp
ZW50SWRlbnRpZmllcikgeworICAgICAgICBWZWN0b3I8UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
PiByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZDsKKworICAgICAgICAvLyBSZW1vdmUg
YWxsIHRoZSByZXNvdXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20gcmVtb3RlUmVzb3Vy
Y2VDbGllbnRzSGFzaE1hcC4KKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcmVtb3RlUmVzb3Vy
Y2VGb3JSZW1vdGVDbGllbnRzKSB7CisgICAgICAgICAgICBwYWlyLnZhbHVlLnJlbW92ZShyZW1v
dGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmIChwYWlyLnZhbHVlLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICByZW1vdGVSZXNvdXJjZUNsaWVudHNUb0JlUmVtb3ZlZC5hcHBl
bmQocGFpci5rZXkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0dXJuIGEgbGlzdCBvZiB0
aGUgdW5yZWZlcmVuY2VkIHJlc291cmNlcy4KKyAgICAgICAgcmV0dXJuIHJlbW90ZVJlc291cmNl
Q2xpZW50c1RvQmVSZW1vdmVkOworICAgIH07CisKKyAgICAvLyBSZW1vdmUgYWxsIHRoZSByZXNv
dXJjZSAtPiBjbGllbnQgZGVwZW5kZW5jaWVzIGZyb20gbV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZv
clJlbW90ZUNsaWVudHMuCisgICAgZm9yIChhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciA6
IHJlbW92ZVJlbW90ZUNsaWVudChtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50
cywgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikpCisgICAgICAgIG1fbG9ja2VkUmVtb3RlUmVzb3Vy
Y2VGb3JSZW1vdGVDbGllbnRzLnJlbW92ZShyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOworCisg
ICAgLy8gUmVtb3ZlIGFsbCB0aGUgcmVzb3VyY2UgLT4gY2xpZW50IGRlcGVuZGVuY2llcyBmcm9t
IG1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy4KKyAgICBmb3Ig
KGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIDogcmVtb3ZlUmVtb3RlQ2xpZW50KG1fcGVu
ZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cywgcmVtb3RlQ2xpZW50SWRl
bnRpZmllcikpIHsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSB1bnJlZmVyZW5jZWQgcmVzb3VyY2Vz
IGZyb20gbV9yZW1vdGVSZXNvdXJjZUNsaWVudHNQZW5kaW5nUmVsZWFzZUhhc2hNYXAuCisgICAg
ICAgIG1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy5yZW1vdmUo
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAgICAgICAvLyBUZWxsIHRoZSBHUFUgcHJv
Y2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZS4KKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ0NjAxOTYxZTkxZGU0NTlmMDRhZjFkOTBlYzgzMzYwMTk4MmM5ZTEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEltYWdlQ2xpZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9SZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDYWNoZWRJbWFnZTsKK2NsYXNzIElt
YWdlQnVmZmVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OworCitjbGFzcyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgOiBwdWJs
aWMgV2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQgeworcHVibGljOgorICAgIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmKTsKKworICAgIHZvaWQg
Y2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNv
cmU6OkltYWdlQnVmZmVyKik7CisgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdl
QnVmZmVyKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWxl
YXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAg
IGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyRm9yUmVtb3RlQ2xpZW50KFdlYkNvcmU6OkltYWdl
QnVmZmVyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElk
ZW50aWZpZXIpOworICAgIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBsb2NrUmVt
b3RlTmF0aXZlSW1hZ2VGb3JSZW1vdGVDbGllbnQoV2ViQ29yZTo6Q2FjaGVkSW1hZ2UmLCBjb25z
dCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRp
ZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKKyAgICB2b2lkIHVubG9ja1JlbW90ZVJlc291
cmNlc0ZvclJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVt
b3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgCitwcml2YXRlOgorICAgIHVzaW5nIFJlbW90ZUNs
aWVudHNIYXNoU2V0ID0gSGFzaFNldDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXI+
OworICAgIHVzaW5nIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgPSBIYXNoTWFwPFdlYkNv
cmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlQ2xpZW50c0hhc2hTZXQ+OworICAg
IHVzaW5nIFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkltYWdlQnVmZmVyKj47CisgICAgdXNp
bmcgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyPjsKKyAgICB1c2luZyBSZW1v
dGVDYWNoZWRJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OkNhY2hlZEltYWdlKiwgUmVt
b3RlTmF0aXZlSW1hZ2VIYXNoTWFwPjsKKworICAgIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZXN0
cm95ZWQoV2ViQ29yZTo6Q2FjaGVkSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYpIG92ZXJyaWRlOworCisgICAgdm9pZCBsb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGll
bnQoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgdm9pZCByZWxlYXNl
UmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAg
IFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIFJlbW90
ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNs
aWVudHM7CisgICAgUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCBtX3BlbmRpbmdVbmxvY2tS
ZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHM7CisgICAgUmVtb3RlQ2FjaGVkSW1hZ2VIYXNo
TWFwIG1fY2FjaGVkSW1hZ2VzOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412070</attachid>
            <date>2020-10-21 23:33:35 -0700</date>
            <delta_ts>2020-10-28 16:33:16 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>217596.patch</filename>
            <type>text/plain</type>
            <size>56453</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NjI2ZjFkZTU3MTYuLjkxZWJkZWZhMDY4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDgxIEBACisyMDIwLTEwLTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2FjaGUgdGhlIEJpdG1hcEltYWdlIGZyYW1l
IGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2luZyBpdCB3aXRoIGl0cyBSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE9ubHkgdGhlIGZyYW1lcyBvZiB0aGUgQml0bWFwSW1hZ2Ugd2lsbCBiZSBjYWNo
ZWQgaW4gdGhlIEdQVSBzaWRlLiBUaGUKKyAgICAgICAgZnJhbWVzIG9mIEJpdG1hcEltYWdlIGhh
dmUgYSB3ZWxsIGRlZmluZWQgbGlmZSBjeWNsZSBpbiB0aGUgV2ViIFByb2Nlc3MuCisgICAgICAg
IFRoZSBjb3VudGVycGFydCBmcmFtZXMgaW4gdGhlIEdQVSBQcm9jZXNzIHdpbGwgaGF2ZSBhIHNp
bWlsYXIgbGlmZSBjeWNsZS4KKyAgICAgICAgV2hlbiB0aGUgZnJhbWUgaXMgZHJhd24gZm9yIHRo
ZSBmaXJzdCB0aW1lIGl0IHdpbGwgYmUgdHJhbnNmZXJlZCBmcm9tIFdlYgorICAgICAgICBQcm9j
ZXNzIHZpYSBhIFNoYXJlYWJsZUJpdG1hcCB0byB0aGUgR1BVIFByb2Nlc3MgYW5kIGNhY2hlZCB1
bmRlciBhIHVuaXF1ZQorICAgICAgICBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgd2hpY2ggd2ls
bCBiZSB1c2VkIHRvIHJlY29yZCB0aGUgTmF0aXZlRHJhd0ltYWdlCisgICAgICAgIGl0ZW0uIFdo
ZW4gdGhlIEJpdG1hcEltYWdlIGRlY2lkZXMgdG8gZGVzdHJveSBpdHMgZGVjb2RlZCBmcmFtZSwg
YSBtZXNzYWdlCisgICAgICAgIHdpbGwgYmUgc2VudCBmcm9tIHRoZSBXZWIgUHJvY2VzcyB0byB0
aGUgR1BVIFByb2Nlc3MgdG8gcmVtb3ZlIHRoZSBjYWNoZWQKKyAgICAgICAgZnJhbWUuIEZvciB0
aGUgZGV0YWlscyBhYm91dCB0aGUgbGlmZSBjeWNsZSBvZiB0aGUgY2FjaGVkIE5hdGl2ZUltYWdl
cywKKyAgICAgICAgc2VlIHRoZSBXZWJLaXQgQ2hhbmdlTG9nLgorCisgICAgICAgICogaHRtbC9J
bWFnZUJpdG1hcC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdl
T2JzZXJ2ZXI6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlQ2xpZW50Lmg6CisgICAgICAgIFdlIG5lZWQgdGhlIENhY2hlZEltYWdlIHRvIGJlIHNlbnQg
YWxvbmcgd2l0aCB0aGUgTmF0aXZlSW1hZ2UgdG8KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoKS4KKworICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQ6
Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5IGlzIGEgc3VwZXJjbGFzcyBvZiBDYWNoZWRJbWFnZUNsaWVudC4gSXQgd2lsbCBiZQor
ICAgICAgICBjYWxsZWQgZm9yIGFueSBOYXRpdmVJbWFnZSBiZWZvcmUgaXQgaXMgZGVsZXRlZC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c3Vic2FtcGxpbmdMZXZl
bEZvclNjYWxlRmFjdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29k
ZWREYXRhKToKKyAgICAgICAgTm90aWZ5IHRoZSBDYWNoZWRJbWFnZUNsaWVudHMgYmVmb3JlIGRl
c3Ryb3lpbmcgdGhlIE5hdGl2ZUltYWdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
YXBwbHkgY29uc3QpOgorICAgICAgICBEcmF3TmF0aXZlSW1hZ2UgY2FuIGhvbGQgYSBOYXRpdmVJ
bWFnZVB0ciBvciBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuIAorICAgICAgICBPbmx5IHRoZSBv
bmUgd2l0aCB0aGUgTmF0aXZlSW1hZ2VQdHIgd2lsbCBiZSByZXBsYXllZCBiYWNrIGhlcmUuIFRo
ZSBvbmUKKyAgICAgICAgd2l0aCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgKHdoaWNoIGlzIFJl
bW90ZUltYWdlQnVmZmVyIHJpZ2h0IG5vdykgaXMKKyAgICAgICAgcmVzcG9uc2libGUgZm9yIHJl
cGxheWluZyBpdCBiYWNrLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd05hdGl2ZUltYWdlOjpyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6bmF0aXZlSW1hZ2VQdHIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
aW1hZ2VTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6Om9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgQWxsb3cgRHJhd05hdGl2ZUltYWdl
IHRvIGhvbGQgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLiBJbiB0aGlzIGNhc2UsIGl0CisgICAg
ICAgIHdpbGwgYmUgc2VudCB0byB0aGUgR1BVIHByb2Nlc3MgdG8gYmUgcmVwbGF5ZWQgYmFjay4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpEZWxlZ2F0ZTo6bG9ja1JlbW90ZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oOgorCisKIDIwMjAtMTAtMjAgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXTogSW1wbGVt
ZW50IERpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXIgaXRlbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
Qml0bWFwLmNwcAppbmRleCBiYTEyOThlNGY3NDcuLjEyOWRkZGQwMmRlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTYwMSwxMCArNjAxLDE3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiwgbG9uZyBsb25nKSBvdmVycmlk
ZSB7IH0KIAorICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlJiwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIH0KKwogICAg
IHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBjYW5E
ZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRp
bmdTdGF0ZSwgY29uc3QgSW50UmVjdCogPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29k
aW5nU3RhdHVzOjpJbnZhbGlkKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIG5hdGl2ZUltYWdlV2ls
bEJlRGVzdHJveWVkKGNvbnN0IEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSBvdmVycmlk
ZSB7IH0KKwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJl
Y3QqID0gbnVsbHB0cikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJyaWRlIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA1Y2M5MzM4MzI1NzQuLmZlYTkyOTI1NTU4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00MTEs
NiArNDExLDE3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRlY29k
ZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYgaW1hZ2UsIGxvCiAgICAgICAgIGNhY2hlZEltYWdl
LT5kZWNvZGVkU2l6ZUNoYW5nZWQoaW1hZ2UsIGRlbHRhKTsKIH0KIAordm9pZCBDYWNoZWRJbWFn
ZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlJiBpbWFn
ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZl
SW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQoreworICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2Vz
KSB7CisgICAgICAgIGlmICgmaW1hZ2UgIT0gY2FjaGVkSW1hZ2UtPmltYWdlKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRp
dmVJbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIHZv
aWQgQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6OmRpZERyYXcoY29uc3QgSW1hZ2Um
IGltYWdlKQogewogICAgIGZvciAoYXV0byBjYWNoZWRJbWFnZSA6IG1fY2FjaGVkSW1hZ2VzKQpA
QCAtNDM0LDYgKzQ0NSwxMiBAQCB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVy
OjppbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiBpbWFnZSwgSQogICAgICAgICBjYWNo
ZWRJbWFnZS0+aW1hZ2VGcmFtZUF2YWlsYWJsZShpbWFnZSwgYW5pbWF0aW5nU3RhdGUsIGNoYW5n
ZVJlY3QsIGRlY29kaW5nU3RhdHVzKTsKIH0KIAordm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1h
Z2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmIGltYWdl
LCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCit7CisgICAgZm9yIChhdXRvIGNh
Y2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCisgICAgICAgIGNhY2hlZEltYWdlLT5uYXRpdmVJ
bWFnZVdpbGxCZURlc3Ryb3llZChpbWFnZSwgbmF0aXZlSW1hZ2UpOworfQorCiB2b2lkIENhY2hl
ZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiBp
bWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsKICAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2Ug
OiBtX2NhY2hlZEltYWdlcykKQEAgLTY4OSw2ICs3MDYsMTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6
aW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYgaW1hZ2UsIEltYWdlQW5pbWF0aW5nU3Rh
dGUgYW4KICAgICAgICAgbV9jbGllbnRzV2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcuY2xlYXIoKTsK
IH0KIAordm9pZCBDYWNoZWRJbWFnZTo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3Qg
SW1hZ2UmIGltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCit7CisgICAg
aWYgKCZpbWFnZSAhPSBtX2ltYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRJbWFnZUNsaWVudD4gY2xpZW50V2Fsa2VyKG1fY2xpZW50
cyk7CisgICAgd2hpbGUgKENhY2hlZEltYWdlQ2xpZW50KiBjbGllbnQgPSBjbGllbnRXYWxrZXIu
bmV4dCgpKQorICAgICAgICBjbGllbnQtPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKCp0aGlz
LCBuYXRpdmVJbWFnZSk7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29u
c3QgSW1hZ2UmIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQogewogICAgIGlmICgmaW1hZ2Ug
IT0gbV9pbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5k
ZXggNzJkNTljMWZmNDg0Li44Njc5ODMyYTRjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xNDksMTAgKzE0OSwxNCBAQCBwcml2YXRlOgogCiAgICAg
ICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKGNvbnN0IEltYWdlJiwgRW5jb2RlZERh
dGFTdGF0dXMpIGZpbmFsOwogICAgICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJ
bWFnZSYsIGxvbmcgbG9uZyBkZWx0YSkgZmluYWw7CisKKyAgICAgICAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
ZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpIGZpbmFsOwogCiAgICAg
ICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRhKGNvbnN0IEltYWdlJikgZmluYWw7CiAgICAg
ICAgIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5pbWF0aW5n
U3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGluZ1N0YXR1
cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBmaW5hbDsKKyAgICAgICAgdm9pZCBuYXRpdmVJ
bWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJikg
ZmluYWw7CisKICAgICAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3Qg
SW50UmVjdCopIGZpbmFsOwogICAgICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNv
bnN0IEltYWdlJikgZmluYWw7CiAKQEAgLTE2NCw2ICsxNjgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRHJhdyhjb25zdCBJbWFnZSYpOwogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRh
KGNvbnN0IEltYWdlJik7CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdl
JiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxw
dHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQpOworICAgIHZvaWQg
bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3QgSW1hZ2UmLCBjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpOwogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJl
Y3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKaW5k
ZXggYmE2NDQ1YjdlYTdlLi5iOTJlNzljZTRlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKKyNp
bmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3
LDYgKzQ4LDggQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB3aGVuIGEgbmV3IGRlY29kZWQgZnJh
bWUgZm9yIGEgbGFyZ2UgaW1hZ2UgaXMgYXZhaWxhYmxlIG9yIHdoZW4gYW4gYW5pbWF0ZWQgaW1h
Z2UgaXMgcmVhZHkgdG8gYWR2YW5jZSB0byB0aGUgbmV4dCBmcmFtZS4KICAgICB2aXJ0dWFsIFZp
c2libGVJblZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWlsYWJsZShDYWNoZWRJbWFnZSYgaW1h
Z2UsIEltYWdlQW5pbWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QpIHsgaW1h
Z2VDaGFuZ2VkKCZpbWFnZSwgY2hhbmdlUmVjdCk7IHJldHVybiBWaXNpYmxlSW5WaWV3cG9ydFN0
YXRlOjpObzsgfQogCisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVk
KENhY2hlZEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSB7IH0KKwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2FjaGVkSW1hZ2Um
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAppbmRleCBiMWVkNGU0ZTg0NzkuLjBhZjZjM2Q4YjIzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMjA1LDEwICsyMDUs
MTAgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXpl
JiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyBp
bmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoQml0bWFwSW1hZ2UmIGltYWdlLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxs
ZXIgdGhhbiBzaXplKCkuCi0gICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZl
SW1hZ2VTaXplKGltYWdlKTsKKyAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRp
dmVJbWFnZVNpemUobmF0aXZlSW1hZ2UpOwogICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCku
dXNlc1dpZHRoQXNIZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNh
bXBsZWRJbWFnZVNpemUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjE3LDcgKzIxNywxMCBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgR3JhcGhpY3NDb250ZXh0JgogICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNy
Y1NpemUpCiAgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRS
ZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsK
IAotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXpl
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKKyAgICBpZiAoaW1hZ2UuaW1h
Z2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZS5pbWFnZU9ic2VydmVyKCktPmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgY29udGV4dCwgbmF0aXZlSW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRl
c3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworICAgIGVsc2UKKyAgICAgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRl
c3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiBJbWFnZURyYXdSZXN1bHQg
Qml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMzA4LDkgKzMxMSw5IEBAIEltYWdlRHJhd1Jlc3VsdCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzCiAgICAgYXV0byBvcmllbnRhdGlvbiA9IG9wdGlvbnMub3JpZW50YXRpb24oKTsKICAg
ICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKSB7CiAgICAg
ICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9
KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCp0aGlzLCBjb250ZXh0LCBpbWFnZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZShvcmllbnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVu
dGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRpb24pKSwgb3B0
aW9ucyk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZSgqdGhpcywgY29udGV4dCwgaW1hZ2UsIGRl
c3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUob3JpZW50YXRpb24pKSwgb3B0aW9ucyk7CiAK
ICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0
SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCkBAIC0zOTUsNyArMzk4LDcgQEAgU3Vic2FtcGxpbmdM
ZXZlbCBCaXRtYXBJbWFnZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKEdyYXBoaWNz
Q29udGV4dCYgY28KIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQg
aW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlmIChDR0NvbnRleHRH
ZXRUeXBlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQor
ICAgIGlmIChjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpICYmIENHQ29udGV4dEdldFR5cGUo
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkgPT0ga0NHQ29udGV4dFR5cGVQREYpCiAgICAgICAg
IHJldHVybiBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0OwogCiAgICAgZmxvYXQgc2NhbGUgPSBz
dGQ6Om1pbihmbG9hdCgxKSwgc3RkOjptYXgoc2NhbGVGYWN0b3Iud2lkdGgoKSwgc2NhbGVGYWN0
b3IuaGVpZ2h0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDIxMGJiYWMzMjcxNS4uNzExM2Q3ZjY0ZTFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKQEAgLTczMSwxMyArNzMxLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAg
ICBiaWRpUnVucy5jbGVhcigpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KTsKKyAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGNhY2hlZEltYWdlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNzYwLDcgKzc2MCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1wbCAmJiBpbWFnZS5p
c1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGlt
YWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywg
b3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKQEAgLTc3Miw3ICs3NzIsNyBAQCBJbWFn
ZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQor
ICAgIGlmIChtX2ltcGwgJiYgaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJl
dHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0
aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1h
aW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMu
aW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CkBAIC03ODUsNyArNzg1LDcgQEAgSW1hZ2VEcmF3UmVz
dWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAo
bV9pbXBsICYmIGltYWdlLmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9p
bXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxl
RmFjdG9yLCBoUnVsZSwgdlJ1bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdl
OjpTdHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
MGQxY2E5MmQ2MDQ1Li4yNTE5ZDdiZWExODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC04Niw2ICs4Niw3IEBAIGNsYXNz
IEdseXBoQnVmZmVyOwogI2VuZGlmCiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKK2NsYXNzIENh
Y2hlZEltYWdlOwogY2xhc3MgRmxvYXRSb3VuZGVkUmVjdDsKIGNsYXNzIEdyYWRpZW50OwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKQEAgLTM3OSw3ICszODAsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQg
bGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0sIENhY2hlZEltYWdlKiA9IG51bGxwdHIpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBJ
bWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpG
cm9tSW1hZ2UgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggMzUzNmQyZjNiNzNjLi42ZDA4NWVkOGM0MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRJbXBsLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNj
YWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJh
d0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgQ2Fj
aGVkSW1hZ2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3Mp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
T2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2
ZXIuaAppbmRleCA4YjA4OWU1OTRjMWEuLmI0ZDcxMGFjNjczMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaApAQCAtNDUsMTAgKzQ1LDEz
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKGNv
bnN0IEltYWdlJiwgRW5jb2RlZERhdGFTdGF0dXMpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgZGVj
b2RlZFNpemVDaGFuZ2VkKGNvbnN0IEltYWdlJiwgbG9uZyBsb25nIGRlbHRhKSA9IDA7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IEltYWdlJiwgR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhj
b25zdCBJbWFnZSYpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERh
dGEoY29uc3QgSW1hZ2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGltYWdlRnJhbWVBdmFpbGFi
bGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1hdGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFu
Z2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxp
ZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25z
dCBJbWFnZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJikgPSAwOworCiAgICAgdmlydHVhbCB2b2lk
IGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0g
bnVsbHB0cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShj
b25zdCBJbWFnZSYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNzc1MDMyMjM5YTVkLi40NTUxNWM1OWExZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
QEAgLTEzMCw4ICsxMzAsMTAgQEAgdm9pZCBJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRh
KHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKQogICAgIEFTU0VSVChmcmFt
ZUNvdW50IDw9IG1fZnJhbWVzLnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgZnJhbWVDb3VudDsgKytpbmRleCkgewotICAgICAgICBpZiAoaW5kZXggPT0gZXhj
bHVkZUZyYW1lKQorICAgICAgICBpZiAoaW5kZXggPT0gZXhjbHVkZUZyYW1lIHx8ICFtX2ZyYW1l
c1tpbmRleF0ubmF0aXZlSW1hZ2UoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAobV9pbWFnZSAmJiBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCkpCisgICAgICAgICAgICBtX2lt
YWdlLT5pbWFnZU9ic2VydmVyKCktPm5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKCptX2ltYWdl
LCBtX2ZyYW1lc1tpbmRleF0ubmF0aXZlSW1hZ2UoKSk7CiAgICAgICAgIGRlY29kZWRTaXplICs9
IG1fZnJhbWVzW2luZGV4XS5jbGVhckltYWdlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA4ZWY0Zjc4NmI3MjQuLjhjOGExMDEzYmFmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yODUsNyArMjg1LDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYsIGMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UqKQogewog
ICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3ND
b250ZXh0KCkuc3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXgg
Mjg1OGZjMjJmYzFmLi5mNzY4Zjg2MjAyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBk
cmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggY2Y4ODkyMTI1NjEwLi4zMDAzNWEwMjQ1MmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTc2Niw3ICs3NjYsNyBAQCBz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0lt
YWdlQnVmZmVyJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotRHJhd05hdGl2ZUltYWdlOjpE
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK0RyYXdOYXRp
dmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlVHlwZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkKICAgICAsIG1f
aW1hZ2UoaW1hZ2UpCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCkBAIC03ODAsNyArNzgw
LDggQEAgRHJhd05hdGl2ZUltYWdlOjp+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCiB2
b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25z
dAogewotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBt
X2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOworICAgIEFTU0VSVChuYXRp
dmVJbWFnZVB0cigpKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShuYXRpdmVJbWFnZVB0
cigpLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRpb25z
KTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CmluZGV4IDZjM2VjMjgyNTA1ZS4uMjc4NDE5OTU3MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKQEAgLTE2MDEsMjcgKzE2MDEsNDUgQEAgT3B0aW9uYWw8UmVmPERyYXdJbWFn
ZUJ1ZmZlcj4+IERyYXdJbWFnZUJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKIGNs
YXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQorICAgIHVzaW5nIE5hdGl2ZUltYWdlVHlwZSA9IFZhcmlhbnQ8TmF0aXZlSW1h
Z2VQdHIsIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcj47CisKKyAgICBzdGF0aWMgUmVmPERyYXdO
YXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlVHlwZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCk7CiAKKyAgICBSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFdURjo6Z2V0X2lmPFJlbW90ZVJlc291cmNlSWRlbnRp
Zmllcj4obV9pbWFnZSkpCisgICAgICAgICAgICByZXR1cm4gKnJlc3VsdDsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9CisKKyAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZVB0cigpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXVEY6OmdldF9pZjxOYXRpdmVJ
bWFnZVB0cj4obV9pbWFnZSkpCisgICAgICAgICAgICByZXR1cm4gKnJlc3VsdDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgRmxvYXRTaXplIGltYWdlU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25z
IG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFnZT4+IGRlY29k
ZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5h
dGlvblJlY3Q7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgTmF0aXZlSW1h
Z2VUeXBlIG1faW1hZ2U7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVj
dCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTY0MSw3
ICsxNjU5LDcgQEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZl
SW1hZ2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAg
IE9wdGlvbmFsPE5hdGl2ZUltYWdlUHRyPiBpbWFnZTsKKyAgICBPcHRpb25hbDxOYXRpdmVJbWFn
ZVR5cGU+IGltYWdlOwogICAgIGRlY29kZXIgPj4gaW1hZ2U7CiAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAppbmRleCA4YjcxYTY1NWIyZTIuLjUzM2YwMjBjNWUzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTc2LDggKzE3NiwxNCBAQCBib29s
IFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVm
ZmVyLCBjb25zdCBGbG9hdFJlYwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlY29yZGVy
OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQg
UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
LCBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UpCiB7CisgICAgaWYgKG1fZGVsZWdhdGUgJiYgY2Fj
aGVkSW1hZ2UpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmZXIgPSBt
X2RlbGVnYXRlLT5sb2NrUmVtb3RlTmF0aXZlSW1hZ2UoKmNhY2hlZEltYWdlLCBpbWFnZSkpIHsK
KyAgICAgICAgICAgIGFwcGVuZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd05hdGl2ZUltYWdlOjpj
cmVhdGUocmVtb3RlUmVzb3VyY2VJZGVudGlmZXIsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wdGlvbnMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAg
ICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDkyM2M1NDg4NTcyOS4uNDMwZGE4N2Fk
YTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTI4LDEyICsy
OCwxNCBAQAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0SW1wbC5oIgogI2luY2x1ZGUgIkltYWdlLmgiIC8vIEZvciBJbWFnZTo6VGlsZVJ1bGUuCisj
aW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVGV4dEZsYWdz
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsKK2NsYXNzIENh
Y2hlZEltYWdlOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEds
eXBoQnVmZmVyOwpAQCAtNjgsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRl
bGVnYXRlKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJ
dGVtJikgeyB9OwogICAgICAgICB2aXJ0dWFsIGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyKFdl
YkNvcmU6OkltYWdlQnVmZmVyJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgbG9ja1JlbW90ZU5hdGl2ZUltYWdlKENhY2hlZEltYWdl
JiwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKSB7IHJldHVybiB7IH07IH0KICAgICB9
OwogCiBwcml2YXRlOgpAQCAtMTA3LDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFj
dG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVm
ZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgQ2FjaGVkSW1h
Z2UqKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcAppbmRleCBhMmM5ZTA5M2ZjMTQuLjJjZjcyZTc3ZTIyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU1NSw3
ICs1NTUsNyBAQCBib29sIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hlZEltYWdl
KikKIHsKICAgICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRp
b24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxv
YXRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4g
ewogICAgICAgICB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXgg
MzgwOTNkNDEzNWI0Li4xZDQ5MDEzYzg5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6
SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUs
IFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmLCBXZWJDb3JlOjpDYWNoZWRJ
bWFnZSopIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NDc4YzBhNWY2MWQuLjhjM2Y1
ZDE1MWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NiBAQAorMjAyMC0xMC0yMSAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIENhY2hl
IHRoZSBCaXRtYXBJbWFnZSBmcmFtZSBpbiBHUFUgUHJvY2VzcyBhbmQgYWxsb3cgcmVmZXJlbmNp
bmcgaXQgd2l0aCBpdHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1OTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBkcmF3aW5nIHNlcXVl
bmNlIG9mIGEgQml0bWFwSW1hZ2UgZnJhbWUgaW4gdGhlIFdlYiBQcm9jZXNzOgorCisgICAgICAg
IDEpIEJpdG1hcEltYWdlOjpkcmF3KCkgY2FsbHMgSW1hZ2VPYnNlcnZlcjo6ZHJhd05hdGl2ZUlt
YWdlKCkuCisgICAgICAgIDIpIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkcmF3
TmF0aXZlSW1hZ2UoKSBmaW5kcyB0aGUgYXNzb2NpYXRlZAorICAgICAgICAgICBDYWNoZWRJbWFn
ZSBhbmQgY2FsbHMgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoKS4KKyAgICAgICAg
MykgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSgpIGNhbGxzIHRoZSBsb2NrUmVtb3RlTmF0aXZl
SW1hZ2UoKSBvZiBpdHMKKyAgICAgICAgICAgZGVsZWdhdGUgd2hpY2ggaXMgUmVtb3RlSW1hZ2VC
dWZmZXJQb3J4eSBpbiB0aGUgY2FzZSBvZiAyRCBjYW52YXMuCisgICAgICAgIDQpIFJlbW90ZUlt
YWdlQnVmZmVyUG9yeHkgY2FsbHMgbG9ja1JlbW90ZU5hdGl2ZUltYWdlRm9yUmVtb3RlQ2xpZW50
KCkgb2YKKyAgICAgICAgICAgdGhlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBvZiBpdHMgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LgorICAgICAgICA1KSBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkgZmluZHMgdGhlIE5hdGl2ZUltYWdlIG9mIHRoZSBnaXZlbiBDYWNoZWRJbWFnZQorICAg
ICAgICAgICBpbiBpdHMgY2FjaGUuIElmIGl0IGRvZXMgbm90IGZpbmQgaXQsIGl0IGFkZHMgaXQg
dG8gdGhlIGNhY2hlLCBhc3NpZ25zCisgICAgICAgICAgIGEgUmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyIHRvIGl0IGFuZCBhc2tzIHRoZSBHUFUgUHJvY2VzcyB0byBjYWNoZSBpdAorICAgICAgICAg
ICBhbHNvLCBtYXJrIHRoZSBjYWNoZWQgTmF0aXZlSW1hZ2UgYSBsb2NrZWQgcmVzb3VyY2UgZm9y
IHRoZSAKKyAgICAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IGFuZCByZXR1cm5zIHRo
ZSBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIuCisKKyAgICAgICAgVGhlIGRyYXdpbmcgc2VxdWVu
Y2UgaW4gdGhlIEdQVSBQcm9jZXNzIGlzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgMSkgV2hl
biBmbHVzaGluZyBhIERpc3BseUxpc3QgaGFwcGVucywgRGlzcGxheUxpc3Q6OlJlcGxheWVyOjpy
ZXBseSgpCisgICAgICAgICAgIGNhbGxzIGFwcGx5KCkgb2YgaXRzIGRlbGVnYXRlICh3aGljaCBp
cyBSZW1vdGVJbWFnZUJ1ZmZlcikuCisgICAgICAgIDIpIFJlbW90ZUltYWdlQnVmZmVyOjphcHBs
eSgpIGNhbGxzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5UmVzb3VyY2VJdGVtKCkKKyAg
ICAgICAgICAgd2hpY2ggd2lsbCBjaGVjayBpZiB0aGUgdHlwZSBvZiB0aGUgSXRlbSBpcyBEcmF3
TmF0aXZlSW1hZ2UuCisgICAgICAgIDMpIElmIGl0IGlzIGEgRHJhd05hdGl2ZUltYWdlLCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kIGZpbmRzIHRoZSBjYWNoZWQKKyAgICAgICAgICAgTmF0aXZlSW1h
Z2UgaW4gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGUgZ2l2ZW4gdGhlIFJlbW90ZVJlc291cmNlSWRl
bnRpZmllcgorICAgICAgICAgICBhbmQgZHJhd3MgaXQgdG8gdGhlIGNvbnRleHQgb2YgdGhlIFJl
bW90ZUltYWdlQnVmZmVyLgorCisgICAgICAgIFRoZSByZWxlYXNlIHNlcXVlbmNlIGluIHRoZSBX
ZWIgUHJvY2VzcyBpcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEpIEltYWdlU291cmNlOjpk
ZXN0cm95RGVjb2RlZERhdGEoKSBjYWxscyB0aGUgSW1hZ2VPYnNlcnZlciB3aGVuIGEgZGVjb2Rl
ZAorICAgICAgICAgICBmcmFtZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuCisgICAgICAgIDIp
IENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ry
b3llZCgpIGZpbmRzCisgICAgICAgICAgIHRoZSBhc3NvY2lhdGVkIENhY2hlZEltYWdlIGFuZCBj
YWxscyBDYWNoZWRJbWFnZTo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoKS4KKyAgICAgICAg
MykgQ2FjaGVkSW1hZ2UgY2FsbHMgYWxsIHRoZSBDYWNoZWRJbWFnZUNsaWVudHMgdG8gbm90aWZ5
IHRoZW0uCisgICAgICAgIDQpIEJlY2F1c2UgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHJlZ2lz
dGVycyBpdHNlbGYgYXMgYSBDYWNoZWRJbWFnZUNsaWVudAorICAgICAgICAgICBvZiB0aGlzIENh
Y2hlZEltYWdlLCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6Om5hdGl2ZUltYWdlV2lsbEJlRGVz
dHJveWVkKCkKKyAgICAgICAgICAgd2lsbCBiZSBjYWxsZWQuCisgICAgICAgIDUpIFRoZSBjYWNo
ZWQgTmF0aXZlSW1hZ2Ugd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGNhY2hlIGFuZCBhIG1lc3Nh
Z2Ugd2lsbAorICAgICAgICAgICBiZSBzZW50IHRvIHRoZSBHUFUgUHJvY2VzcyB3aGVuIG5vIHJl
bW90ZSBjbGllbnQgaXMgcmVmZXJlbmNpbmcgdGhpcworICAgICAgICAgICBOYXRpdmVJbWFnZS4K
KworICAgICAgICBUaGUgcmVsZWFzZSBzZXF1ZW5jZSBpbiB0aGUgR1BVIFByb2Nlc3MgaXMgdGhl
IGZvbGxvd2luZzoKKworICAgICAgICAxKSBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2UgcmVsZWFzZXMgdGhlIGNhY2hlZAorICAgICAgICAgICBOYXRpdmVJbWFnZSB2
aWEgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXI6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjphcHBseVJlc291cmNlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWROYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2Fj
aGVOYXRpdmVJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZU5hdGl2ZUltYWdl
Rm9yUmVtb3RlQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaDoKKwogMjAyMC0xMC0yMCAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdOiBJbXBsZW1lbnQgRGlz
cGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlciBpdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IGUyNjgzNjJhNTE0
Yi4uMDAxZmViYjZjOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtNzgsMzEgKzc4LDEyIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChpdGVt
LnR5cGUoKSA9PSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JN
ZWRpYSkgewotICAgICAgICAgICAgYXBwbHkoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlBhaW50RnJhbWVGb3JNZWRpYSY+KGl0ZW0pLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseVJlc291cmNlSXRlbShpdGVtLCBjb250ZXh0KSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseVJlc291cmNlSXRlbShpdGVtLCBjb250ZXh0KTsK
KyAgICAgICAgCisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlN
ZWRpYUl0ZW0oaXRlbSwgY29udGV4dCk7CiAgICAgfQogCi0gICAgdm9pZCBhcHBseShXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCi0gICAgewotICAgICAgICBhdXRvIHByb2Nlc3MgPSBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpOwotICAgICAgICBp
ZiAoIXByb2Nlc3MpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBwbGF5ZXJQ
cm94eSA9IHByb2Nlc3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJveHko
aXRlbS5pZGVudGlmaWVyKCkpOwotICAgICAgICBpZiAoIXBsYXllclByb3h5KQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gcGxheWVyID0gcGxheWVyUHJveHktPm1lZGlhUGxh
eWVyKCk7Ci0gICAgICAgIGlmICghcGxheWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIGl0ZW0uZGVzdGluYXRpb24o
KSk7Ci0gICAgfQotICAgIAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA2NTM5MTJh
ZTRhZjguLjIyZTFjYTMzOGI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtNzYsMTQg
Kzc2LDUwIEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlSZXNvdXJjZUl0ZW0o
Y29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdyCiB7CiAgICAgaWYgKGl0ZW0udHlwZSgp
ID09IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyKSB7CiAgICAgICAgIGF1
dG8mIGRyYXdJdGVtID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3Q6OkRyYXdJbWFnZUJ1
ZmZlciY+KGl0ZW0pOwotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVz
b3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcihkcmF3SXRlbS5yZW1vdGVSZXNvdXJjZUlkZW50
aWZpZXIoKSkpIHsKLSAgICAgICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGNvbnRleHQsIGRyYXdJ
dGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBkcmF3SXRlbS5zb3VyY2UoKSwgZHJhd0l0ZW0ub3B0aW9u
cygpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoZHJh
d0l0ZW0ucmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICBpZiAoIWltYWdlQnVm
ZmVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGltYWdlQnVmZmVyLT5k
cmF3KGNvbnRleHQsIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBkcmF3SXRlbS5zb3VyY2Uo
KSwgZHJhd0l0ZW0ub3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IAorICAgIGlmIChpdGVtLnR5cGUoKSA9PSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZSkgeworICAgICAgICBhdXRvJiBkcmF3SXRlbSA9IHN0YXRpY19jYXN0PGNvbnN0IERp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2UmPihpdGVtKTsKKyAgICAgICAgYXV0byBpbWFnZSA9
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWROYXRpdmVJbWFnZShkcmF3SXRlbS5yZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGlmICghaW1hZ2UpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGRy
YXdJdGVtLmltYWdlU2l6ZSgpLCBkcmF3SXRlbS5kZXN0aW5hdGlvblJlY3QoKSwgZHJhd0l0ZW0u
c291cmNlKCksIGRyYXdJdGVtLm9wdGlvbnMoKSk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KKyAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6YXBwbHlNZWRpYUl0ZW0oY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW0mIGl0ZW0sIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoaXRlbS50eXBlKCkgIT0gV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWEpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBhdXRvJiBtZWRpYUl0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBE
aXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhJj4oaXRlbSk7CisgICAgICAgIAorICAgIGF1
dG8gcHJvY2VzcyA9IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKTsKKyAgICBpZiAoIXByb2Nl
c3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gcGxheWVyUHJveHkgPSBwcm9j
ZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLmdldFByb3h5KG1lZGlhSXRlbS5p
ZGVudGlmaWVyKCkpOworICAgIGlmICghcGxheWVyUHJveHkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGF1dG8gcGxheWVyID0gcGxheWVyUHJveHktPm1lZGlhUGxheWVyKCk7CisgICAg
aWYgKCFwbGF5ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnRleHQucGFpbnRG
cmFtZUZvck1lZGlhKCpwbGF5ZXIsIG1lZGlhSXRlbS5kZXN0aW5hdGlvbigpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjppbWFnZUJ1ZmZlckJh
Y2tlbmRXYXNDcmVhdGVkKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IEludFNp
emUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQo
bG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFdU
Rk1vdmUoaGFuZGxlKSwgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CkBAIC0xMzYsNiArMTcyLDEwIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0CiAgICAgICAgIGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5nZXRJbWFnZURhdGEob3V0cHV0
Rm9ybWF0LCBzcmNSZWN0KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0YVJl
ZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0KK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y2FjaGVOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciAgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlLCByZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOworfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VS
ZW1vdGVSZXNvdXJjZShSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggODE4NzRmYWU2NWQyLi4zZWI0Yjdk
MWFiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBSZW5kZXJpbmcgb3BlcmF0aW9ucy4KICAgICBib29sIGFwcGx5UmVzb3VyY2VJdGVt
KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Jik7CisgICAgYm9vbCBhcHBseU1lZGlhSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gTWVzc2FnZXMg
dG8gYmUgc2VudC4KICAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
YmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIpOwpAQCAtODUsNiArODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlz
dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1p
dChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBEaXNwbGF5TGlzdEZs
dXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2
b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2Um
Jik+JiYpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJ
bWFnZVB0ciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBy
ZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsK
IAogICAgIFJlbW90ZVJlc291cmNlQ2FjaGUgbV9yZW1vdGVSZXNvdXJjZUNhY2hlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCAwMzVkNmJiNDYyYzEuLjk2YzE5
ZTkwOGJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTI3
LDYgKzI3LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3Vu
dGVkIHsKICAgICB2b2lkIEZsdXNoRGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHZvaWQgRmx1c2hEaXNwbGF5TGlzdEFuZENv
bW1pdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QgZGlzcGxheUxpc3QsIFdlYktp
dDo6RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgZmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIEdl
dEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VE
YXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKKyAgICB2b2lkIENhY2hlTmF0aXZl
SW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNl
UmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZVJl
c291cmNlSWRlbnRpZmllcikKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IGFkMDQ3MjYyNTIx
OS4uMmVmNGMwMmQ2NTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCkBAIC0zNywxNSArMzcsMjggQEAg
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdGVSZXNvdXIKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi1XZWJDb3JlOjpJbWFnZUJ1ZmZlciogUmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZVJlc291cmNlSWRlbnRpZmllcikKK0ltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjYWNoZWRJbWFnZUJ1ZmZlcihSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKQogewogICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKIH0KIAordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgUmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fbmF0aXZlSW1hZ2VzLmFkZChyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIGltYWdlKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCitO
YXRpdmVJbWFnZVB0ciBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWROYXRpdmVJbWFnZShSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHJl
dHVybiBtX25hdGl2ZUltYWdlcy5nZXQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwog
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyIHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBpZiAobV9p
bWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHJl
dHVybjsKKyAgICBpZiAobV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbW90ZVJlc291cmNlSWRlbnRp
ZmllcikpCisgICAgICAgIHJldHVybjsKICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3Vy
Y2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDRlZDhjZTBhY2MxNS4uNzE2YzEz
ZDE5NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTQ0LDEyICs0NCwxNiBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogICAgIFdlYkNvcmU6
OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRp
dmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VQdHIgY2FjaGVkTmF0aXZlSW1hZ2UoV2ViQ29yZTo6UmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIHVzaW5nIFJlbW90
ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKKyAgICB1c2lu
ZyBSZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHI+OwogCiAgICAgUmVtb3RlSW1h
Z2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIFJlbW90ZU5hdGl2ZUltYWdlSGFz
aE1hcCBtX25hdGl2ZUltYWdlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCBlMGQyZmY3ZDFhNjYuLjkxMTZlZGY2YTRkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTE2Myw2ICsxNjMsMTMgQEAgcHJvdGVjdGVk
OgogICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSgpLmxvY2tSZW1vdGVJbWFnZUJ1ZmZlckZvclJlbW90ZUNsaWVudChp
bWFnZUJ1ZmZlciwgbV9yZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAorICAgIFdl
YkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciBsb2NrUmVtb3RlTmF0aXZlSW1hZ2UoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJu
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHko
KS5sb2NrUmVtb3RlTmF0aXZlSW1hZ2VGb3JSZW1vdGVDbGllbnQoY2FjaGVkSW1hZ2UsIGltYWdl
LCBtX3JlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCiAgICAgRGlzcGxheUxpc3RG
bHVzaElkZW50aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOwogICAgIERpc3BsYXlMaXN0Rmx1
c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVt
b3RlUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIHsgV2ViQ29y
ZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggNWQ0ZTA4MjBlMDlhLi5hZDdmMDg4Yzky
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTEzMSw2
ICsxMzEsMTEgQEAgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWkKICAgICByZXR1cm4gc2VudEZsdXNo
SWRlbnRpZmllcjsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hl
TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlTmF0aXZlSW1h
Z2UoaW1hZ2UsIHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpOworfQorCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFz
ZVJlbW90ZVJlc291cmNlKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgKaW5kZXggM2ZlNTFjNWRhOTVlLi5iZGIxODA5ODkwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBX
ZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNwbGF5
TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpS
ZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVy
IGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lk
IGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3Jl
OjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291
cmNlKFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBib29sIHdhaXRG
b3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHAKaW5kZXggZjQwZjQxOTc0MTExLi44ZDVjOGZjM2VhMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEltYWdlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zOCw3ICszOSw3IEBAIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSYKIHsKIH0KIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlSW1h
Z2VCdWZmZXIoUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6Oklt
YWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZUltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBJbWFn
ZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQnVm
ZmVycy5hZGQoaWRlbnRpZmllciwgaW1hZ2VCdWZmZXIpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC01OCw2ICs1OSwyNyBAQCB2b2lkIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKFJlbW90ZVJlc291cmNl
SWRlbnRpZmllciByZW1vdAogICAgIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW1vdGVSZXNvdXJj
ZUlkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bmF0aXZl
SW1hZ2VXaWxsQmVEZXN0cm95ZWQoV2ViQ29yZTo6Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlLCBj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit7CisgICAgYXV0byBpdGVyID0gbV9jYWNoZWRJ
bWFnZXMuZmluZCgmY2FjaGVkSW1hZ2UpOworICAgIGlmIChpdGVyID09IG1fY2FjaGVkSW1hZ2Vz
LmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZW1vdmUgdGhlIHJlc291cmNlIGZy
b20gdGhlIGNhY2hlLgorICAgIGF1dG8gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyID0gaXRlci0+
dmFsdWUudGFrZShpbWFnZSk7CisgICAgaWYgKCFyZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0
aGlzIHJlc291cmNlIHVubGVzcyBpdCdzIHBlbmRpbmcgcmVwbGF5aW5nIGJhY2suCisgICAgcmVs
ZWFzZVJlbW90ZVJlc291cmNlKHJlbW90ZVJlc291cmNlSWRlbnRpZmllcik7CisKKyAgICAvLyBS
ZW1vdmUgKnRoaXMqIGZyb20gYmVpbmcgYSBjbGllbnQgb2YgYWNoZWRJbWFnZSwgaWYgdGhlcmUg
aXMgbm8gTmF0aXZlSW1hZ2VzIGNhY2hlZCBmb3IgaXQuCisgICAgaWYgKGl0ZXItPnZhbHVlLmlz
RW1wdHkoKSkgeworICAgICAgICBpdGVyLT5rZXktPnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAg
ICAgIG1fY2FjaGVkSW1hZ2VzLnJlbW92ZShpdGVyKTsKKyAgICB9Cit9CisKIGJvb2wgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5Ojpsb2NrUmVtb3RlSW1hZ2VCdWZmZXJGb3JSZW1vdGVDbGllbnQo
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
Q2xpZW50SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWltYWdlQnVmZmVyLnJlbW90ZVJlc291cmNl
SWRlbnRpZmllcigpKQpAQCAtNzIsNiArOTQsMjMgQEAgYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OmxvY2tSZW1vdGVJbWFnZUJ1ZmZlckZvclJlbW90ZUNsaWVudChJbWFnZUJ1ZmZlciYK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZU5hdGl2ZUltYWdlRm9yUmVtb3RlQ2xpZW50KFdl
YkNvcmU6OkNhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKK3sK
KyAgICBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX2NhY2hlZEltYWdlcy5lbnN1cmUoJmNhY2hlZElt
YWdlLCBbJl0geworICAgICAgICBjYWNoZWRJbWFnZS5hZGRDbGllbnQoKnRoaXMpOworICAgICAg
ICByZXR1cm4gUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwKCk7CisgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOworCisgICAgYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgPSBuYXRpdmVJbWFnZXMu
ZW5zdXJlKGltYWdlLCBbJl0geworICAgICAgICBhdXRvIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
ciA9IFJlbW90ZVJlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSwgcmVtb3RlUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIHJlbW90ZVJlc291cmNlSWRlbnRpZmll
cjsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICBsb2NrUmVtb3RlUmVzb3VyY2VGb3JS
ZW1vdGVDbGllbnQocmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVDbGllbnRJZGVudGlm
aWVyKTsKKyAgICByZXR1cm4gcmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyOworfQorCiB2b2lkIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50
KFJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQogewogICAgIC8vIEFk
ZCB0aGUgInJlc291cmNlIC0+IGNsaWVudCIgZGVwZW5kZW5jeSBpbiBtX2xvY2tlZFJlbW90ZVJl
c291cmNlRm9yUmVtb3RlQ2xpZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCmlu
ZGV4IDQ3OGU0Yjk5M2Q3Ny4uZDQ2MDE5NjFlOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmgKQEAgLTI3LDEwICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CisjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRJbWFnZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBJbWFnZUJ1
ZmZlcjsKIH0KIApAQCAtMzgsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogCi1jbGFzcyBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkgeworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IDogcHVibGljIFdlYkNvcmU6
OkNhY2hlZEltYWdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7CiAKQEAgLTQ3LDEyICs0OSwxNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyRm9yUmVtb3Rl
Q2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIFdlYkNvcmU6OlJlbW90ZVJlc291
cmNlSWRlbnRpZmllciBsb2NrUmVtb3RlTmF0aXZlSW1hZ2VGb3JSZW1vdGVDbGllbnQoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6
OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHVubG9ja1JlbW90ZVJlc291cmNlc0ZvclJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW1vdGVS
ZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CiAgICAgCiBwcml2YXRl
OgogICAgIHVzaW5nIFJlbW90ZUNsaWVudHNIYXNoU2V0ID0gSGFzaFNldDxXZWJDb3JlOjpSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXI+OwogICAgIHVzaW5nIFJlbW90ZVJlc291cmNlQ2xpZW50c0hh
c2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbW90ZVJlc291cmNlSWRlbnRpZmllciwgUmVtb3Rl
Q2xpZW50c0hhc2hTZXQ+OwogICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFw
ID0gSGFzaE1hcDxXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6Oklt
YWdlQnVmZmVyKj47CisgICAgdXNpbmcgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1h
cDxXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlm
aWVyPjsKKyAgICB1c2luZyBSZW1vdGVDYWNoZWRJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNv
cmU6OkNhY2hlZEltYWdlKiwgUmVtb3RlTmF0aXZlSW1hZ2VIYXNoTWFwPjsKKworICAgIHZvaWQg
bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoV2ViQ29yZTo6Q2FjaGVkSW1hZ2UmLCBjb25zdCBX
ZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2NrUmVtb3Rl
UmVzb3VyY2VGb3JSZW1vdGVDbGllbnQoV2ViQ29yZTo6UmVtb3RlUmVzb3VyY2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmll
cik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKQEAgLTYwLDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKICAgICBSZW1vdGVSZXNvdXJjZUNs
aWVudHNIYXNoTWFwIG1fbG9ja2VkUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzOwogICAg
IFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9wZW5kaW5nVW5sb2NrUmVtb3RlUmVzb3Vy
Y2VGb3JSZW1vdGVDbGllbnRzOworICAgIFJlbW90ZUNhY2hlZEltYWdlSGFzaE1hcCBtX2NhY2hl
ZEltYWdlczsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412586</attachid>
            <date>2020-10-28 16:33:19 -0700</date>
            <delta_ts>2020-11-02 11:00:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201028163316.patch</filename>
            <type>text/plain</type>
            <size>52425</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDIwLTEwLTI4ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2Fj
aGUgdGhlIEJpdG1hcEltYWdlIGZyYW1lIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVu
Y2luZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9ubHkgdGhlIGZyYW1lcyBvZiB0aGUg
Qml0bWFwSW1hZ2Ugd2lsbCBiZSBjYWNoZWQgaW4gdGhlIEdQVSBzaWRlLiBUaGUKKyAgICAgICAg
ZnJhbWVzIG9mIEJpdG1hcEltYWdlIGhhdmUgYSB3ZWxsIGRlZmluZWQgbGlmZSBjeWNsZSBpbiB0
aGUgV2ViIFByb2Nlc3MuCisgICAgICAgIFRoZSBjb3VudGVycGFydCBmcmFtZXMgaW4gdGhlIEdQ
VSBQcm9jZXNzIHdpbGwgaGF2ZSBhIHNpbWlsYXIgbGlmZSBjeWNsZS4KKyAgICAgICAgV2hlbiB0
aGUgZnJhbWUgaXMgZHJhd24gZm9yIHRoZSBmaXJzdCB0aW1lIGl0IHdpbGwgYmUgdHJhbnNmZXJl
ZCBmcm9tIFdlYgorICAgICAgICBQcm9jZXNzIHZpYSBhIFNoYXJlYWJsZUJpdG1hcCB0byB0aGUg
R1BVIFByb2Nlc3MgYW5kIGNhY2hlZCB1bmRlciBhIHVuaXF1ZQorICAgICAgICBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlY29yZCB0aGUgTmF0aXZl
RHJhd0ltYWdlCisgICAgICAgIGl0ZW0uIFdoZW4gdGhlIEJpdG1hcEltYWdlIGRlY2lkZXMgdG8g
ZGVzdHJveSBpdHMgZGVjb2RlZCBmcmFtZSwgYSBtZXNzYWdlCisgICAgICAgIHdpbGwgYmUgc2Vu
dCBmcm9tIHRoZSBXZWIgUHJvY2VzcyB0byB0aGUgR1BVIFByb2Nlc3MgdG8gcmVtb3ZlIHRoZSBj
YWNoZWQKKyAgICAgICAgZnJhbWUuIEZvciB0aGUgZGV0YWlscyBhYm91dCB0aGUgbGlmZSBjeWNs
ZSBvZiB0aGUgY2FjaGVkIE5hdGl2ZUltYWdlcywKKyAgICAgICAgc2VlIHRoZSBXZWJLaXQgQ2hh
bmdlTG9nLgorCisgICAgICAgICogaHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdl
OjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlT2JzZXJ2ZXI6Om5hdGl2ZUltYWdlV2lsbEJlRGVz
dHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpuYXRpdmVJbWFnZVdpbGxC
ZURlc3Ryb3llZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50Lmg6CisgICAgICAgIFdlIG5lZWQg
dGhlIENhY2hlZEltYWdlIHRvIGJlIHNlbnQgYWxvbmcgd2l0aCB0aGUgTmF0aXZlSW1hZ2UgdG8K
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoKS4KKworICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2VDbGllbnQ6Om5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKToK
KyAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IGlzIGEgc3VwZXJjbGFzcyBvZiBDYWNo
ZWRJbWFnZUNsaWVudC4gSXQgd2lsbCBiZQorICAgICAgICBjYWxsZWQgZm9yIGFsbCBOYXRpdmVJ
bWFnZXMgb2YgdGhlIENhY2hlZEltYWdlIGJlZm9yZSBpdCBpcyBkZWxldGVkLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVG
YWN0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgV2UgbmVlZCB0byBsZXQgR3Jh
cGhpY3NDb250ZXh0IHByb2Nlc3MgYWxsIGtpbmRzIG9mIGltYWdlcyBhbmQgcmVjb3JkIAorICAg
ICAgICBvbmx5IHRoZSBwcmltaXRpdmVzIG9mIHRoZSBkcmF3aW5nLiBUaGUgQml0bWFwSW1hZ2Ug
d2lsbCByZWNvcmQgZHJhd2luZworICAgICAgICBvbmUgb2YgaXRzIGZyYW1lcy4gU1ZHSW1hZ2Ug
d2lsbCByZWNvcmQgZHJhd2luZyBpdHMgU1ZHIHJlbmRlcmVycy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZU9ic2VydmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmRlc3Ryb3lEZWNv
ZGVkRGF0YSk6CisgICAgICAgIE5vdGlmeSB0aGUgQ2FjaGVkSW1hZ2VDbGllbnRzIGJlZm9yZSBk
ZXN0cm95aW5nIHRoZSBOYXRpdmVJbWFnZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6
OmFwcGx5IGNvbnN0KToKKyAgICAgICAgRHJhd05hdGl2ZUltYWdlIGNhbiBob2xkIGEgTmF0aXZl
SW1hZ2VQdHIgb3IgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLiAKKyAgICAgICAgT25seSB0
aGUgb25lIHdpdGggdGhlIE5hdGl2ZUltYWdlUHRyIHdpbGwgYmUgcmVwbGF5ZWQgYmFjayBoZXJl
LiBUaGUgb25lCisgICAgICAgIHdpdGggUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyICh3aGlj
aCBpcyBSZW1vdGVJbWFnZUJ1ZmZlciByaWdodCBub3cpCisgICAgICAgIGlzIHJlc3BvbnNpYmxl
IGZvciByZXBsYXlpbmcgaXQgYmFjay4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6Om5hdGl2
ZUltYWdlUHRyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlSW1hZ2U6OmltYWdlU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd05hdGl2ZUltYWdlOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIEFsbG93IERyYXdO
YXRpdmVJbWFnZSB0byBob2xkIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci4gSW4gdGhpcyBj
YXNlLAorICAgICAgICBpdCB3aWxsIGJlIHNlbnQgdG8gdGhlIEdQVSBwcm9jZXNzIHRvIGJlIHJl
cGxheWVkIGJhY2suCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmxvY2tSZW1vdGVOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKwogMjAyMC0xMC0yOCAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gaG9y
aXpvbnRhbEFsaWdubWVudE9mZnNldCBzaG91bGQgY2hlY2sgZm9yIGVtcHR5IHJ1biBsaXN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkocmV2aXNpb24gMjY5MTE1KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYw
MSwxMCArNjAxLDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGNv
bnN0IEltYWdlJiwgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0KIAorICAgIHZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IEltYWdlJiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRp
dmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMpOworICAgIH0KKwogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBJbWFnZSYp
IG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1h
Z2UmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxh
YmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogPSBu
dWxscHRyLCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdlJiwg
Y29uc3QgTmF0aXZlSW1hZ2VQdHImKSBvdmVycmlkZSB7IH0KKwogICAgIHZvaWQgY2hhbmdlZElu
UmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGUgeyB9
CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpIG92ZXJyaWRl
IHsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAJKHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw2ICs0MTEsMTcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6ZAogICAgICAgICBjYWNoZWRJbWFnZS0+ZGVj
b2RlZFNpemVDaGFuZ2VkKGltYWdlLCBkZWx0YSk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OkNh
Y2hlZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBJbWFnZSYgaW1hZ2UsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIG5hdGl2ZUltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKK3sKKyAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykgewor
ICAgICAgICBpZiAoJmltYWdlICE9IGNhY2hlZEltYWdlLT5pbWFnZSgpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG5hdGl2ZUltYWdlLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBjYWNoZWRJbWFnZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCiB2b2lkIENh
Y2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpkaWREcmF3KGNvbnN0IEltYWdlJiBpbWFn
ZSkKIHsKICAgICBmb3IgKGF1dG8gY2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykKQEAgLTQz
NCw2ICs0NDUsMTIgQEAgdm9pZCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6aQog
ICAgICAgICBjYWNoZWRJbWFnZS0+aW1hZ2VGcmFtZUF2YWlsYWJsZShpbWFnZSwgYW5pbWF0aW5n
U3RhdGUsIGNoYW5nZVJlY3QsIGRlY29kaW5nU3RhdHVzKTsKIH0KIAordm9pZCBDYWNoZWRJbWFn
ZTo6Q2FjaGVkSW1hZ2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoY29uc3Qg
SW1hZ2UmIGltYWdlLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgbmF0aXZlSW1hZ2UpCit7CisgICAg
Zm9yIChhdXRvIGNhY2hlZEltYWdlIDogbV9jYWNoZWRJbWFnZXMpCisgICAgICAgIGNhY2hlZElt
YWdlLT5uYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChpbWFnZSwgbmF0aXZlSW1hZ2UpOworfQor
CiB2b2lkIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZU9ic2VydmVyOjpjaGFuZ2VkSW5SZWN0KGNv
bnN0IEltYWdlJiBpbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsKICAgICBmb3IgKGF1dG8g
Y2FjaGVkSW1hZ2UgOiBtX2NhY2hlZEltYWdlcykKQEAgLTY4OSw2ICs3MDYsMTYgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6aW1hZ2VGcmFtZUF2YWlsYWJsZShjbwogICAgICAgICBtX2NsaWVudHNXYWl0
aW5nRm9yQXN5bmNEZWNvZGluZy5jbGVhcigpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpuYXRp
dmVJbWFnZVdpbGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBuYXRpdmVJbWFnZSkKK3sKKyAgICBpZiAoJmltYWdlICE9IG1faW1hZ2UpCisgICAg
ICAgIHJldHVybjsKKworICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEltYWdl
Q2xpZW50PiBjbGllbnRXYWxrZXIobV9jbGllbnRzKTsKKyAgICB3aGlsZSAoQ2FjaGVkSW1hZ2VD
bGllbnQqIGNsaWVudCA9IGNsaWVudFdhbGtlci5uZXh0KCkpCisgICAgICAgIGNsaWVudC0+bmF0
aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoKnRoaXMsIG5hdGl2ZUltYWdlKTsKK30KKwogdm9pZCBD
YWNoZWRJbWFnZTo6Y2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEludFJl
Y3QqIHJlY3QpCiB7CiAgICAgaWYgKCZpbWFnZSAhPSBtX2ltYWdlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDI2OTExNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDksMTAgKzE0OSwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgZW5jb2RlZERhdGFT
dGF0dXNDaGFuZ2VkKGNvbnN0IEltYWdlJiwgRW5jb2RlZERhdGFTdGF0dXMpIGZpbmFsOwogICAg
ICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChjb25zdCBJbWFnZSYsIGxvbmcgbG9uZyBkZWx0
YSkgZmluYWw7CisgICAgICAgIAorICAgICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBJ
bWFnZSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJikgZmluYWw7CiAKICAgICAgICAgYm9vbCBjYW5E
ZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBpbWFn
ZUZyYW1lQXZhaWxhYmxlKGNvbnN0IEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3Qg
SW50UmVjdCogY2hhbmdlUmVjdCA9IG51bGxwdHIsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdT
dGF0dXM6OkludmFsaWQpIGZpbmFsOworICAgICAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVz
dHJveWVkKGNvbnN0IEltYWdlJiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSBmaW5hbDsKKwogICAg
ICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0KikgZmlu
YWw7CiAgICAgICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKSBm
aW5hbDsKIApAQCAtMTY0LDYgKzE2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREcmF3KGNv
bnN0IEltYWdlJik7CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoY29uc3QgSW1hZ2Um
KTsKICAgICB2b2lkIGltYWdlRnJhbWVBdmFpbGFibGUoY29uc3QgSW1hZ2UmLCBJbWFnZUFuaW1h
dGluZ1N0YXRlLCBjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gbnVsbHB0ciwgRGVjb2RpbmdT
dGF0dXMgPSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCk7CisgICAgdm9pZCBuYXRpdmVJbWFnZVdp
bGxCZURlc3Ryb3llZChjb25zdCBJbWFnZSYsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAg
dm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgJKHJldmlzaW9u
IDI2OTExNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKKyNpbmNsdWRlICJOYXRp
dmVJbWFnZVB0ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDYgKzQ4LDggQEAg
cHVibGljOgogICAgIC8vIENhbGxlZCB3aGVuIGEgbmV3IGRlY29kZWQgZnJhbWUgZm9yIGEgbGFy
Z2UgaW1hZ2UgaXMgYXZhaWxhYmxlIG9yIHdoZW4gYW4gYW5pbWF0ZWQgaW1hZ2UgaXMgcmVhZHkg
dG8gYWR2YW5jZSB0byB0aGUgbmV4dCBmcmFtZS4KICAgICB2aXJ0dWFsIFZpc2libGVJblZpZXdw
b3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWlsYWJsZShDYWNoZWRJbWFnZSYgaW1hZ2UsIEltYWdlQW5p
bWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QpIHsgaW1hZ2VDaGFuZ2VkKCZp
bWFnZSwgY2hhbmdlUmVjdCk7IHJldHVybiBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpObzsgfQog
CisgICAgdmlydHVhbCB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKENhY2hlZEltYWdl
JiwgY29uc3QgTmF0aXZlSW1hZ2VQdHImKSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1v
dmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2FjaGVkSW1hZ2UmKSB7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJ
KHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDEwICsyMTEsMTAgQEAgYm9vbCBC
aXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQK
IAotc3RhdGljIGlubGluZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoQml0bWFwSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXpl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBTdWJzYW1w
bGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXpl
KCkuCi0gICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGlt
YWdlKTsKKyAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUo
bmF0aXZlSW1hZ2UpOwogICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNI
ZWlnaHQoKSkKICAgICAgICAgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IHN1YnNhbXBsZWRJbWFnZVNp
emUudHJhbnNwb3NlZFNpemUoKTsKIApAQCAtMjIzLDE0ICsyMjMsMTYgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdAogICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXpl
ICE9IHNyY1NpemUpCiAgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwg
RmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNp
emUpKTsKIAotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1h
Z2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKKyAgICBpZiAoaW1h
Z2UuaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZS5pbWFnZU9ic2VydmVyKCktPmRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgbmF0aXZlSW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNp
emUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworICAgIGVsc2UKKyAgICAg
ICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNp
emUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiBJbWFnZURyYXdS
ZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHJlcXVlc3RlZFNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChkZXN0UmVjdC5p
c0VtcHR5KCkgfHwgcmVxdWVzdGVkU3JjUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7Ci0KICAgICAKICAgICBhdXRvIHNyY1JlY3QgPSBy
ZXF1ZXN0ZWRTcmNSZWN0OwogICAgIGF1dG8gcHJlZmVycmVkU2l6ZSA9IHNpemUoKTsKQEAgLTMy
Miw5ICszMjQsOSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpCiAg
ICAgYXV0byBvcmllbnRhdGlvbiA9IG9wdGlvbnMub3JpZW50YXRpb24oKTsKICAgICBpZiAob3Jp
ZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKSB7CiAgICAgICAgIG9yaWVu
dGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRT
aXplKHNvdXJjZVNpemUob3JpZW50YXRpb24pKSwgeyBvcHRpb25zLCBvcmllbnRhdGlvbiB9KTsK
KyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCp0aGlzLCBjb250ZXh0LCBpbWFnZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmllbnRhdGlvbikpLCB7IG9wdGlvbnMsIG9y
aWVudGF0aW9uIH0pOwogICAgIH0gZWxzZQotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNpemUob3JpZW50YXRp
b24pKSwgb3B0aW9ucyk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZSgqdGhpcywgY29udGV4dCwg
aW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNvdXJjZVNpemUob3JpZW50YXRpb24p
KSwgb3B0aW9ucyk7CiAKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZnJhbWVE
ZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCkBAIC00MDksNyArNDExLDcg
QEAgU3Vic2FtcGxpbmdMZXZlbCBCaXRtYXBJbWFnZTo6c3Vic2FtcGxpbgogewogI2lmIFVTRShD
RykKICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQ
REYgY29udGV4dHMuCi0gICAgaWYgKENHQ29udGV4dEdldFR5cGUoY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKSkgPT0ga0NHQ29udGV4dFR5cGVQREYpCisgICAgaWYgKGNvbnRleHQuaGFzUGxhdGZv
cm1Db250ZXh0KCkgJiYgQ0dDb250ZXh0R2V0VHlwZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
KSA9PSBrQ0dDb250ZXh0VHlwZVBERikKICAgICAgICAgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQ7CiAKICAgICBmbG9hdCBzY2FsZSA9IHN0ZDo6bWluKGZsb2F0KDEpLCBzdGQ6Om1h
eChzY2FsZUZhY3Rvci53aWR0aCgpLCBzY2FsZUZhY3Rvci5oZWlnaHQoKSkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCShyZXZpc2lvbiAyNjkxMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzEsMTMgKzczMSwxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0CiAgICAgYmlkaVJ1bnMu
Y2xlYXIoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAg
IG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zLCBjYWNoZWRJbWFnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTc2MCw3ICs3NjAsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jl
c3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1wbCAmJiBp
bWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0lt
YWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKQEAgLTc3Miw3ICs3NzIsNyBA
QCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGlu
ZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3Vt
ZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2Us
IGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIAogICAg
IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRo
aXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKQEAgLTc4NSw3
ICs3ODUsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCisgICAgaWYgKG1faW1wbCAmJiBpbWFnZS5p
c1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1h
Z2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZS
dWxlLCBvcHRpb25zKTsKIAogICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYg
dlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjY5MTE1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgR2x5cGhCdWZmZXI7CiAjZW5k
aWYKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBG
bG9hdFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhZGllbnQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJ
bXBsOwpAQCAtMzc5LDcgKzM4MCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSwgQ2FjaGVkSW1hZ2UqID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVz
dGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlv
bjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgJKHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyAr
NzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVs
ZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBDYWNoZWRJbWFnZSopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAkocmV2aXNpb24gMjY5
MTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWQoY29uc3QgSW1hZ2UmLCBFbmNvZGVkRGF0YVN0
YXR1cykgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoY29uc3QgSW1h
Z2UmLCBsb25nIGxvbmcgZGVsdGEpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgSW1hZ2UmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KGNvbnN0IEltYWdlJikgPSAwOwogCiAgICAg
dmlydHVhbCBib29sIGNhbkRlc3Ryb3lEZWNvZGVkRGF0YShjb25zdCBJbWFnZSYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgaW1hZ2VGcmFtZUF2YWlsYWJsZShjb25zdCBJbWFnZSYsIEltYWdlQW5p
bWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyLCBEZWNvZGlu
Z1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG5hdGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKGNvbnN0IEltYWdlJiwgY29uc3QgTmF0aXZlSW1h
Z2VQdHImKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFn
ZSYsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSBudWxscHRyKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJikgPSAwOwogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAJKHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDggKzEzMCwxMCBAQCB2b2lk
IEltYWdlU291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEoc2l6CiAgICAgQVNTRVJUKGZyYW1lQ291
bnQgPD0gbV9mcmFtZXMuc2l6ZSgpKTsKIAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBmcmFtZUNvdW50OyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChpbmRleCA9PSBleGNsdWRl
RnJhbWUpCisgICAgICAgIGlmIChpbmRleCA9PSBleGNsdWRlRnJhbWUgfHwgIW1fZnJhbWVzW2lu
ZGV4XS5uYXRpdmVJbWFnZSgpKQogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICht
X2ltYWdlICYmIG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgICAgIG1faW1hZ2Ut
PmltYWdlT2JzZXJ2ZXIoKS0+bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoKm1faW1hZ2UsIG1f
ZnJhbWVzW2luZGV4XS5uYXRpdmVJbWFnZSgpKTsKICAgICAgICAgZGVjb2RlZFNpemUgKz0gbV9m
cmFtZXNbaW5kZXhdLmNsZWFySW1hZ2UoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmNwcAkocmV2aXNpb24gMjY5MTE1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpkcmF3SW1hZ2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgQ2FjaGVkSW1hZ2UqKQogewogICAgIFVO
VVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0
KCkuc3RhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCShyZXZp
c2lvbiAyNjkxMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBA
QCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6
OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiwgQ2FjaGVkSW1hZ2UqKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAJKHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODU5LDcgKzg1OSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0KICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdp
bmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCiAgICAgLCBtX2ltYWdlKGltYWdlKQog
ICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQpAQCAtODczLDcgKzg3Myw4IEBAIERyYXdOYXRp
dmVJbWFnZTo6fkRyYXdOYXRpdmVJbWFnZSgpID0gZGUKIAogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6
OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1f
c3JjUmVjdCwgbV9vcHRpb25zKTsKKyAgICBBU1NFUlQobmF0aXZlSW1hZ2VQdHIoKSk7CisgICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobmF0aXZlSW1hZ2VQdHIoKSwgbV9pbWFnZVNpemUsIG1f
ZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2Um
IGl0ZW0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDI2
OTExNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MDEsMjcgKzE3MDEsNDUgQEAg
T3B0aW9uYWw8UmVmPERyYXdJbWFnZUJ1ZmZlcj4+IERyYXdJbWFnZQogCiBjbGFzcyBEcmF3TmF0
aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
KyAgICB1c2luZyBOYXRpdmVJbWFnZVR5cGUgPSBWYXJpYW50PE5hdGl2ZUltYWdlUHRyLCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+OworICAgIAorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2
ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VUeXBlJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKTsKIAorICAgIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gV1RGOjpnZXRfaWY8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPihtX2ltYWdlKSkKKyAgICAgICAgICAgIHJldHVybiAqcmVzdWx0OworICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KKworICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlUHRy
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFdURjo6Z2V0X2lmPE5h
dGl2ZUltYWdlUHRyPihtX2ltYWdlKSkKKyAgICAgICAgICAgIHJldHVybiAqcmVzdWx0OworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCisgICAgRmxvYXRTaXplIGltYWdlU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTaXplOyB9CiAgICAgRmxvYXRSZWN0IHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPERyYXdOYXRpdmVJbWFn
ZT4+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxm
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVR5cGUmLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAg
TmF0aXZlSW1hZ2VUeXBlIG1faW1hZ2U7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAg
IEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpA
QCAtMTc0MSw3ICsxNzU5LDcgQEAgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVy
JiBlbgogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZlSW1h
Z2U+PiBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9w
dGlvbmFsPE5hdGl2ZUltYWdlUHRyPiBpbWFnZTsKKyAgICBPcHRpb25hbDxOYXRpdmVJbWFnZVR5
cGU+IGltYWdlOwogICAgIGRlY29kZXIgPj4gaW1hZ2U7CiAgICAgaWYgKCFpbWFnZSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAJKHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg3LDggKzE4NywxNCBAQCBib29sIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBSZWNvcmRl
cjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSkKIHsKKyAgICBpZiAobV9kZWxlZ2F0ZSAmJiBjYWNoZWRJbWFn
ZSkgeworICAgICAgICBpZiAoYXV0byByZW1vdGVSZXNvdXJjZUlkZW50aWZlciA9IG1fZGVsZWdh
dGUtPmxvY2tSZW1vdGVOYXRpdmVJbWFnZSgqY2FjaGVkSW1hZ2UsIGltYWdlKSkgeworICAgICAg
ICAgICAgYXBwZW5kSXRlbUFuZFVwZGF0ZUV4dGVudChEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShy
ZW1vdGVSZXNvdXJjZUlkZW50aWZlciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogICAgIGFwcGVu
ZEl0ZW1BbmRVcGRhdGVFeHRlbnQoRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCShyZXZpc2lvbiAyNjkxMTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsMTQgQEAKICNpbmNsdWRlICJEaXNwbGF5
TGlzdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGwuaCIKICNpbmNsdWRlICJJbWFn
ZS5oIiAvLyBGb3IgSW1hZ2U6OlRpbGVSdWxlLgorI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7CitjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIEZsb2F0
UG9pbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBHbHlwaEJ1ZmZlcjsKQEAgLTY3LDYgKzY5
LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGxvY2tSZW1vdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGxvY2tSZW1vdGVOYXRpdmVJbWFnZShDYWNoZWRJbWFnZSYsIGNv
bnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJikgeyByZXR1cm4geyB9OyB9CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJikgeyB9OwogICAgIH07CiAKQEAg
LTEwNyw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVS
dWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJh
d05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxm
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIENhY2hlZEltYWdlKikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCShyZXZp
c2lvbiAyNjkxMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTU1LDcgKzU1NSw3IEBAIGJvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdl
QnUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zLCBDYWNoZWRJbWFnZSopCiB7CiAgICAgc3RydWN0IERyYXdOYXRpdmVJbWFn
ZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZs
b2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd05hdGl2ZUlt
YWdlKCkgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAkocmV2aXNpb24gMjY5MTE1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdl
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJD
b3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5h
dGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJiwgV2ViQ29yZTo6Q2FjaGVkSW1hZ2Uq
KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGZsb2F0KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjkxMjcpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisy
MDIwLTEwLTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAg
IFtHUFUgUHJvY2Vzc10gQ2FjaGUgdGhlIEJpdG1hcEltYWdlIGZyYW1lIGluIEdQVSBQcm9jZXNz
IGFuZCBhbGxvdyByZWZlcmVuY2luZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZp
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgdGhlIGRyYXdpbmcgc2VxdWVuY2Ugb2YgYSBCaXRtYXBJbWFnZSBmcmFtZSBpbiB0aGUgV2Vi
IFByb2Nlc3M6CisKKyAgICAgICAgMSkgQml0bWFwSW1hZ2U6OmRyYXcoKSBjYWxscyBJbWFnZU9i
c2VydmVyOjpkcmF3TmF0aXZlSW1hZ2UoKS4KKyAgICAgICAgMikgQ2FjaGVkSW1hZ2U6OkNhY2hl
ZEltYWdlT2JzZXJ2ZXI6OmRyYXdOYXRpdmVJbWFnZSgpIGZpbmRzIHRoZSBhc3NvY2lhdGVkCisg
ICAgICAgICAgIENhY2hlZEltYWdlIGFuZCBjYWxscyBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZSgpLgorICAgICAgICAzKSBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKCkgY2FsbHMg
dGhlIGxvY2tSZW1vdGVOYXRpdmVJbWFnZSgpIG9mIGl0cworICAgICAgICAgICBkZWxlZ2F0ZSB3
aGljaCBpcyBSZW1vdGVJbWFnZUJ1ZmZlclBvcnh5IGluIHRoZSBjYXNlIG9mIDJEIGNhbnZhcy4K
KyAgICAgICAgNCkgUmVtb3RlSW1hZ2VCdWZmZXJQb3J4eSBjYWxscyBsb2NrUmVtb3RlTmF0aXZl
SW1hZ2VGb3JSZW1vdGVDbGllbnQoKSBvZgorICAgICAgICAgICB0aGUgUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5IG9mIGl0cyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuCisgICAgICAgIDUp
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBmaW5kcyB0aGUgTmF0aXZlSW1hZ2Ugb2YgdGhlIGdp
dmVuIENhY2hlZEltYWdlCisgICAgICAgICAgIGluIGl0cyBjYWNoZS4gSWYgaXQgZG9lcyBub3Qg
ZmluZCBpdCwgaXQgYWRkcyBpdCB0byB0aGUgY2FjaGUsIGFzc2lnbnMKKyAgICAgICAgICAgYSBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgdG8gaXQgYW5kIGFza3MgdGhlIEdQVSBQcm9jZXNz
IHRvIGNhY2hlCisgICAgICAgICAgIGl0IGFsc28sIG1hcmsgdGhlIGNhY2hlZCBOYXRpdmVJbWFn
ZSBhIGxvY2tlZCByZXNvdXJjZSBmb3IgdGhlIGNsaWVudAorICAgICAgICAgICBSZW1vdGVJbWFn
ZUJ1ZmZlclBvcnh5IGFuZCByZXR1cm5zIHRoZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
CisKKyAgICAgICAgVGhlIGRyYXdpbmcgc2VxdWVuY2UgaW4gdGhlIEdQVSBQcm9jZXNzIGlzIHRo
ZSBmb2xsb3dpbmc6CisKKyAgICAgICAgMSkgV2hlbiBmbHVzaGluZyBhIERpc3BseUxpc3QgaGFw
cGVucywgRGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBseSgpCisgICAgICAgICAgIGNhbGxzIGFw
cGx5KCkgb2YgaXRzIGRlbGVnYXRlICh3aGljaCBpcyBSZW1vdGVJbWFnZUJ1ZmZlcikuCisgICAg
ICAgIDIpIFJlbW90ZUltYWdlQnVmZmVyOjphcHBseSgpIGNhbGxzIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmFwcGx5UmVzb3VyY2VJdGVtKCkKKyAgICAgICAgICAgd2hpY2ggd2lsbCBjaGVjayBp
ZiB0aGUgdHlwZSBvZiB0aGUgSXRlbSBpcyBEcmF3TmF0aXZlSW1hZ2UuCisgICAgICAgIDMpIElm
IGl0IGlzIGEgRHJhd05hdGl2ZUltYWdlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIGZpbmRzIHRo
ZSBjYWNoZWQKKyAgICAgICAgICAgTmF0aXZlSW1hZ2UgaW4gaXRzIFJlbW90ZVJlc291cmNlQ2Fj
aGUgZ2l2ZW4gdGhlIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICAgICBhbmQgZHJh
d3MgaXQgdG8gdGhlIGNvbnRleHQgb2YgdGhlIGNsaWVudCBSZW1vdGVJbWFnZUJ1ZmZlci4KKwor
ICAgICAgICBUaGUgcmVsZWFzZSBzZXF1ZW5jZSBpbiB0aGUgV2ViIFByb2Nlc3MgaXMgdGhlIGZv
bGxvd2luZzoKKworICAgICAgICAxKSBJbWFnZVNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhKCkg
Y2FsbHMgdGhlIEltYWdlT2JzZXJ2ZXIgd2hlbiBhIGRlY29kZWQKKyAgICAgICAgICAgZnJhbWUg
aXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLgorICAgICAgICAyKSBDYWNoZWRJbWFnZTo6Q2FjaGVk
SW1hZ2VPYnNlcnZlcjo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoKSBmaW5kcworICAgICAg
ICAgICB0aGUgYXNzb2NpYXRlZCBDYWNoZWRJbWFnZSBhbmQgY2FsbHMgQ2FjaGVkSW1hZ2U6Om5h
dGl2ZUltYWdlV2lsbEJlRGVzdHJveWVkKCkuCisgICAgICAgIDMpIENhY2hlZEltYWdlIGNhbGxz
IGFsbCB0aGUgQ2FjaGVkSW1hZ2VDbGllbnRzIHRvIG5vdGlmeSB0aGVtLgorICAgICAgICA0KSBC
ZWNhdXNlIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSByZWdpc3RlcmVkIGl0c2VsZiBhcyBhIENh
Y2hlZEltYWdlQ2xpZW50CisgICAgICAgICAgIG9mIHRoaXMgQ2FjaGVkSW1hZ2UsIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6bmF0aXZlSW1hZ2VXaWxsQmVEZXN0cm95ZWQoKQorICAgICAgICAg
ICB3aWxsIGJlIGNhbGxlZC4KKyAgICAgICAgNSkgVGhlIGNhY2hlZCBOYXRpdmVJbWFnZSB3aWxs
IGJlIHJlbW92ZWQgZnJvbSB0aGUgY2FjaGUgYW5kIGEgbWVzc2FnZSB3aWxsCisgICAgICAgICAg
IGJlIHNlbnQgdG8gdGhlIEdQVSBQcm9jZXNzIHdoZW4gbm8gcmVtb3RlIGNsaWVudCBpcyByZWZl
cmVuY2luZyB0aGlzCisgICAgICAgICAgIE5hdGl2ZUltYWdlLgorCisgICAgICAgIFRoZSByZWxl
YXNlIHNlcXVlbmNlIGluIHRoZSBHUFUgUHJvY2VzcyBpcyB0aGUgZm9sbG93aW5nOgorCisgICAg
ICAgIDEpIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSByZWxlYXNl
cyB0aGUgY2FjaGVkCisgICAgICAgICAgIE5hdGl2ZUltYWdlIHZpYSBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5UmVzb3VyY2VJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWROYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNv
dXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpuYXRpdmVJbWFnZVdpbGxCZURl
c3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9j
a1JlbW90ZU5hdGl2ZUltYWdlRm9yUmVtb3RlQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDoKKwogMjAyMC0xMC0yOCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nl
c3NdIEVhZ2VybHkgZmx1c2ggdGhlIFB1dEltYWdlRGF0YSBpdGVtIHRvIHRoZSBHUFUgUHJvY2Vz
cwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAkocmV2aXNpb24gMjY5MTE1KQorKysgU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw4IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6YXBwbHlSZXNvdXIKIHsKICAgICBpZiAoaXRlbS50eXBlKCkgPT0gRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIpIHsKICAgICAgICAgYXV0byYgZHJhd0l0ZW0gPSBz
dGF0aWNfY2FzdDxjb25zdCBEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyJj4oaXRlbSk7Cisg
ICAgICAgIEFTU0VSVChkcmF3SXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisK
ICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJ
bWFnZUJ1ZmZlcihkcmF3SXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CiAgICAg
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NCw2
ICs4NiwxOSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5UmVzb3VyCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGlmIChpdGVtLnR5cGUoKSA9PSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSkgeworICAgICAgICBhdXRvJiBkcmF3SXRl
bSA9IHN0YXRpY19jYXN0PGNvbnN0IERpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2UmPihpdGVt
KTsKKyAgICAgICAgaWYgKCFkcmF3SXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhdXRvIGltYWdlID0gbV9yZW1v
dGVSZXNvdXJjZUNhY2hlLmNhY2hlZE5hdGl2ZUltYWdlKGRyYXdJdGVtLnJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBkcmF3SXRlbS5pbWFnZVNpemUoKSwgZHJhd0l0ZW0uZGVzdGluYXRpb25SZWN0KCksIGRyYXdJ
dGVtLnNvdXJjZSgpLCBkcmF3SXRlbS5vcHRpb25zKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNjMsNiArMTc4LDExIEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXQKICAgICBjb21wbGV0aW9u
SGFuZGxlcihJUEM6OkltYWdlRGF0YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0K
IAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVO
YXRpdmVJbWFnZShpbWFnZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwogdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBt
X3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgJKHJldmlzaW9uIDI2OTEx
NSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZs
dXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiwgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZl
SW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNh
Y2hlIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjkxMTUpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kIE5vdFJlCiAgICAgdm9pZCBGbHVzaERpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICB2b2lkIEZsdXNoRGlzcGxh
eUxpc3RBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlM
aXN0LCBXZWJLaXQ6OkRpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBDYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGltYWdl
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAJKHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsMTAgKzQyLDIzIEBAIEltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjYWNoZWQKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQg
PSBtX25hdGl2ZUltYWdlcy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZSk7
CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30K
KworTmF0aXZlSW1hZ2VQdHIgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkTmF0aXZlSW1hZ2Uo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
K3sKKyAgICByZXR1cm4gbV9uYXRpdmVJbWFnZXMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7Cit9CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm47CisgICAgaWYgKG1fbmF0aXZlSW1hZ2VzLnJlbW92
ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CiAgICAgLy8g
Q2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSBy
ZWxlYXNpbmcgaXQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmgJKHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEyICs0NCwx
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+JiYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJ
bWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIgY2FjaGVkTmF0
aXZlSW1hZ2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lk
IHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogCiBwcml2YXRlOgogICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhh
c2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKKyAgICB1c2luZyBSZW1vdGVOYXRpdmVJbWFnZUhh
c2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2Vi
Q29yZTo6TmF0aXZlSW1hZ2VQdHI+OwogCiAgICAgUmVtb3RlSW1hZ2VCdWZmZXJIYXNoTWFwIG1f
aW1hZ2VCdWZmZXJzOworICAgIFJlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdl
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgJKHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjYsNiArMTY2LDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5sb2NrUmVtb3RlSW1h
Z2VCdWZmZXJGb3JSZW1vdGVDbGllbnQoaW1hZ2VCdWZmZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB9CiAKKyAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgbG9ja1JlbW90ZU5hdGl2ZUltYWdlKFdlYkNvcmU6OkNhY2hlZEltYWdlJiBjYWNoZWRJ
bWFnZSwgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImIGltYWdlKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkubG9ja1JlbW90ZU5hdGl2ZUltYWdlRm9y
UmVtb3RlQ2xpZW50KGNhY2hlZEltYWdlLCBpbWFnZSwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIH0KKwogICAgIHZvaWQgd2lsbEFwcGVuZEl0ZW0oY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW0mKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY29uc3RleHByIHNp
emVfdCBEaXNwbGF5TGlzdEJhdGNoU2l6ZSA9IDUxMjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKHJldmlzaW9uIDI2OTExNSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiwxMSBAQCBEaXNwbGF5TGlzdEZsdXNoSWRl
bnRpZmllciBSZW1vdGVSZW5kZXJpCiAgICAgcmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7CiB9
CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKGNv
bnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKGltYWdl
LCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyKTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3Jl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaAkocmV2aXNpb24gMjY5MTE1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
RGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdChjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIERpc3BsYXlMaXN0Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlz
cGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNhY2hl
TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNl
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBib29sIHdhaXRG
b3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuY3BwCShyZXZpc2lvbiAyNjkxMTUpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0NhY2hlZEltYWdlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC0zOCw3ICszOSw3IEBAIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3Rl
UmVzb3VyY2UKIHsKIH0KIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlSW1h
Z2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQordm9pZCBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgSW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVyKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlcnMuYWRkKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgaW1hZ2VCdWZmZXIpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CkBAIC01OCw2ICs1OSwyNyBAQCB2b2lkIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltCiAgICAgcmVsZWFzZVJlbW90ZVJlc291
cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpuYXRpdmVJbWFnZVdpbGxCZURlc3Ryb3llZChXZWJDb3JlOjpDYWNoZWRJ
bWFnZSYgY2FjaGVkSW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3sKKyAgICBh
dXRvIGl0ZXIgPSBtX2NhY2hlZEltYWdlcy5maW5kKCZjYWNoZWRJbWFnZSk7CisgICAgaWYgKGl0
ZXIgPT0gbV9jYWNoZWRJbWFnZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFJl
bW92ZSB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgY2FjaGUuCisgICAgYXV0byByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgPSBpdGVyLT52YWx1ZS50YWtlKGltYWdlKTsKKyAgICBpZiAoIXJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVsbCB0
aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVuZGlu
ZyByZXBsYXlpbmcgYmFjay4KKyAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKworICAgIC8vIFJlbW92ZSAqdGhpcyogZnJvbSBiZWluZyBhIGNs
aWVudCBvZiBhY2hlZEltYWdlLCBpZiB0aGVyZSBpcyBubyBOYXRpdmVJbWFnZXMgY2FjaGVkIGZv
ciBpdC4KKyAgICBpZiAoaXRlci0+dmFsdWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGl0ZXItPmtl
eS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICAgICAgbV9jYWNoZWRJbWFnZXMucmVtb3ZlKGl0
ZXIpOworICAgIH0KK30KKwogYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmxvY2tSZW1v
dGVJbWFnZUJ1ZmZlckZvclJlbW90ZUNsaWVudChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQogewogICAg
IGlmICghaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpCkBAIC03Miw2
ICs5NCwyMyBAQCBib29sIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk6OmxvY2tSZW1vdGVOYXRpdmVJbWFnZUZvclJlbW90ZUNsaWVudChXZWJD
b3JlOjpDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpCit7
CisgICAgYXV0byYgbmF0aXZlSW1hZ2VzID0gbV9jYWNoZWRJbWFnZXMuZW5zdXJlKCZjYWNoZWRJ
bWFnZSwgWyZdIHsKKyAgICAgICAgY2FjaGVkSW1hZ2UuYWRkQ2xpZW50KCp0aGlzKTsKKyAgICAg
ICAgcmV0dXJuIFJlbW90ZU5hdGl2ZUltYWdlSGFzaE1hcCgpOworICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKKworICAgIGF1dG8gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gbmF0aXZlSW1h
Z2VzLmVuc3VyZShpbWFnZSwgWyZdIHsKKyAgICAgICAgYXV0byByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2Us
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgbG9ja1Jl
bW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
cmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjsKK30KKwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmxvY2tSZW1vdGVS
ZXNvdXJjZUZvclJlbW90ZUNsaWVudChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
Q2xpZW50SWRlbnRpZmllcikKIHsKICAgICAvLyBBZGQgdGhlICJyZXNvdXJjZSAtPiBjbGllbnQi
IGRlcGVuZGVuY3kgaW4gbV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHMuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgJKHJldmlzaW9uIDI2OTExNSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNywxMiBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRJbWFnZUNsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ2FjaGVkSW1h
Z2U7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIH0KIApAQCAtMzgsNyArNDAsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogCi1jbGFzcyBS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
IDogcHVibGljIFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7CiAKQEAg
LTQ3LDE3ICs0OSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgbG9ja1JlbW90
ZUltYWdlQnVmZmVyRm9yUmVtb3RlQ2xpZW50KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOwor
ICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBsb2NrUmVtb3RlTmF0aXZl
SW1hZ2VGb3JSZW1vdGVDbGllbnQoV2ViQ29yZTo6Q2FjaGVkSW1hZ2UmLCBjb25zdCBXZWJDb3Jl
OjpOYXRpdmVJbWFnZVB0ciYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIHVubG9ja1JlbW90ZVJlc291cmNlc0Zv
clJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3Rl
Q2xpZW50SWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgdXNpbmcgUmVtb3RlQ2xpZW50c0hh
c2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj47CiAg
ICAgdXNpbmcgUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVDbGllbnRzSGFzaFNldD47CiAgICAg
dXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqPjsKKyAgICB1
c2luZyBSZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlUHRyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+OworICAgIHVzaW5n
IFJlbW90ZUNhY2hlZEltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6Q2FjaGVkSW1hZ2Uq
LCBSZW1vdGVOYXRpdmVJbWFnZUhhc2hNYXA+OworCisgICAgdm9pZCBuYXRpdmVJbWFnZVdpbGxC
ZURlc3Ryb3llZChXZWJDb3JlOjpDYWNoZWRJbWFnZSYsIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlUHRyJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90
ZUNsaWVudChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKICAgICB2
b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogCiAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgbV9pbWFnZUJ1ZmZl
cnM7CisgICAgUmVtb3RlQ2FjaGVkSW1hZ2VIYXNoTWFwIG1fY2FjaGVkSW1hZ2VzOwogICAgIFJl
bW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZvclJlbW90
ZUNsaWVudHM7CiAgICAgUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCBtX3BlbmRpbmdVbmxv
Y2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudHM7CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412945</attachid>
            <date>2020-11-02 11:00:29 -0800</date>
            <delta_ts>2020-11-10 14:13:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201102110028.patch</filename>
            <type>text/plain</type>
            <size>264147</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzOThiMTFiMWUwZTk4
ODg3ZmQ5MmM2ZjllNzJhMDhmMmYxYjhmYS4uNWNkY2RhNDc1NDRjNTU5Y2YzNTAwNTliZjVkNTkw
M2FiMmVlMmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwNSBAQAorMjAyMC0xMS0wMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
OiBDYWNoZSB0aGUgTmF0aXZlSW1hZ2UgaW4gR1BVIFByb2Nlc3MgYW5kIGFsbG93IHJlZmVyZW5j
aW5nIGl0IHdpdGggaXRzIFJlbW90ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTk2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFn
ZSk6CisKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisK
KyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0
Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAqIHBhZ2UvbWFj
L1RleHRJbmRpY2F0b3JXaW5kb3cubW06CisgICAgICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3
IGluaXRXaXRoRnJhbWU6dGV4dEluZGljYXRvcjptYXJnaW46b2Zmc2V0Ol0pOgorICAgICAgICAo
Y3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJp
dG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2
ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3Jt
ZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lc05hdGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29uY3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdO
YXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybUltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFj
dG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2VPZlNpemUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2Vu
ZDo6c2lua0ludG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjbGVhckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6bmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpJbWFnZVNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUF0SW5kZXhDYWNoZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFn
ZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNhY2hl
TmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oLgorICAgICAg
ICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRp
dmVJbWFnZTo6TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6On5O
YXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmlzTnVsbCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6cGxhdGZvcm1JbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6cGxhdGZvcm1JbWFnZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRp
dmVJbWFnZTo6c2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2VQdHIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUHRyLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9M
YXllck1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZp
ZGVvRnVsbHNjcmVlbklubGluZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxh
c3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyTWFuYWdlck9iakM6OnVwZGF0ZVZpZGVv
RnVsbHNjcmVlbklubGluZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1
cGRhdGVDb250ZW50c0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1EcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZDo6Y2Fpcm9TdXJmYWNlQ29lcmNl
VG9JbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6aGFzQWxwaGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXJTdWJpbWFnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFy
TmF0aXZlSW1hZ2VTdWJpbWFnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1EcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5SW1hZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOYXRpdmVJbWFnZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
aGFzQWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpbmdsZVBp
eGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xl
YXJTdWJpbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlSGFzQWxwaGEpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybiBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6
OmltYWdlRm9yU291cmNlR3JhcGhpYyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd1BsYXRmb3JtSW1hZ2U6OkRyYXdQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGxhdGZvcm1JbWFnZTo6YXBwbHkgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6cmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmltYWdlU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpvcHRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQbGF0Zm9ybUltYWdlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQbGF0Zm9ybUltYWdlOjpzb3Vy
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQbGF0Zm9ybUlt
YWdlOjpkZXN0aW5hdGlvblJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdQbGF0Zm9ybUltYWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdQbGF0Zm9ybUltYWdlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6bG9ja1JlbW90
ZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdT
dHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6SWNvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9ySW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVy
UGlwZS5jcHA6CisgICAgICAgIChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNl
OjpoYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKE5pY29zaWE6OkNh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKE5pY29z
aWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKE5pY29z
aWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRl
bnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JU
aGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybURyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdO
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmRyYXdQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZl
SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNv
cHlJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6c2lua0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVj
dDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1h
Z2U6Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzaW5n
bGVQaXhlbFNvbGlkQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
OmNsZWFyU3ViaW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlU2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpuYXRpdmVJbWFnZUhhc0FscGhhKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Om5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VC
YWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9y
ZTo6aW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNw
bGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2E6OmVtaXRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlU2FtcGxlQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRT
eXN0ZW1QcmV2aWV3QmFkZ2UpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAyMC0xMS0wMSAgTWFzb24gWGlhbyAgPG1lQG1hc29u
eC5jYT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjUyNjg5KTogYm94LXNoYWRvdyB3aXRoIGlu
c2V0IGFuZCBuZWdhdGl2ZSBzcHJlYWQgcmVuZGVycyBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAy
NDQwMzVjZjljY2Q5YmYyNzA3MGIxMThmODcwYWYxOTM0YTc5ZjAwLi41YWVkOTFiZjdjZDBkNDNi
YzcyOTk5YmE2YzgwNzA2NDY1ZjIyZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIw
LTExLTAyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtH
UFUgUHJvY2Vzc106IENhY2hlIHRoZSBOYXRpdmVJbWFnZSBpbiBHUFUgUHJvY2VzcyBhbmQgYWxs
b3cgcmVmZXJlbmNpbmcgaXQgd2l0aCBpdHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1OTYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5UmVzb3VyY2VJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkUGxhdGZvcm1J
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1v
dGVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlUGxhdGZvcm1JbWFnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpuYXRpdmVJ
bWFnZVdpbGxCZURlbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OmxvY2tSZW1vdGVOYXRpdmVJbWFnZUZvclJlbW90ZUNsaWVudCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6CisKKzIw
MjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAg
W0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFn
ZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJbWFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1h
Z2VDcmVhdGVGcm9tQ0dJbWFnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAo
SVBDOjpkZWNvZGVQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6ZW5jb2RlT3B0aW9uYWxQ
bGF0Zm9ybUltYWdlKToKKyAgICAgICAgKElQQzo6ZGVjb2RlT3B0aW9uYWxQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZW5jb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQbGF0Zm9ybUltYWdlUHRyPjo6ZGVjb2Rl
KToKKyAgICAgICAgKElQQzo6ZW5jb2RlTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAo
SVBDOjpkZWNvZGVOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmVuY29kZU9w
dGlvbmFsTmF0aXZlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpkZWNvZGVPcHRpb25h
bE5hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxOYXRp
dmVJbWFnZVB0cj46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8TmF0aXZlSW1hZ2VQdHI+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAo
V2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9E
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6OnVpSW1hZ2VGb3JJ
bWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RlbGl2ZXJEZWxheWVkRHJvcFByZXZpZXdJ
ZlBvc3NpYmxlOl0pOgorICAgICAgICAodWlJbWFnZUZvckltYWdlKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfaGFuZGxlRHJvcEJ5SW5zZXJ0aW5nSW1hZ2VQbGFjZWhvbGRlcnM6c2Vzc2lv
bjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJlc2VudGF0aW9uU25hcHNob3RGb3JQ
cmV2aWV3SXRlbUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29u
c3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojppc0FsbW9z
dFNvbGlkQ29sb3IpOgorCiAyMDIwLTExLTAxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgcmVtYWluaW5nIGFsdGVybmF0aXZlIHByZWZlcmVuY2Ugc2V0
dGluZyBtZWNoYW5pc21zIGZyb20gTGF5b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCA5ZjZmNWMwNzViYTlmOTU0OTRiNDQ5MTk5Y2Y4Yzg5NmNkOGJjZmI1Li44YTY3ZDhl
MjNhMzNkOTE3M2Q3YmFkMWRjMTJkNWJlOTE4YTAyNjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTEtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDb250cm9sIHRoZSBsaWZl
IGN5Y2xlIG9mIHRoZSBwbGF0Zm9ybSBpbWFnZSBieSBhIG5ldyBjbGFzcyBuYW1lZCBOYXRpdmVJ
bWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
NDI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
T00vRE9NLm1tOgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFu
ZFJlY3RzOl0pOgorICAgICAgICAqIE1pc2MvV2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNh
Y2hlIGltYWdlRm9yVVJMOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JE
YXRhOnNjYWxlOl0pOgorCiAyMDIwLTEwLTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KIAogICAgICAgICBbVGVzdGluZ10gUmVtb3ZlIHJlcXVpcmVtZW50IG9mIGFkZGluZyBuZXcg
U1BJIGZvciBlYWNoIHByZWZlcmVuY2UgdGhhdCBuZWVkcyB0ZXN0aW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQppbmRleCA0MDZlMDRlOWY1NTAxMDUwZThiYTdlZjExYWE0MWIwYmJiYmVjMGMzLi43NmE5ZGMx
Y2Q4ODhlMTdlODA4M2M3M2I4MDAwNmU1OGMzNGE1OWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAg
LTEyMDQsNyArMTIwNCw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJ
bWFnZS5oCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5H
TFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTEyMTMsNiArMTIxMiw3
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
SW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXJC
YWNrZW5kLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtVGV4dFRyYWNrLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNjM3NzFiMDQwNTg3YTk0ODVmNDQ2MDhm
OGMxMjgzZWY3NmM2MTVmOS4uZjdiZTI1YTYwMDc0YjdjNDJjM2IwODZkNTVkZDYxYWMwMzE1ZDJi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE5MzksNiArMTkzOSw3IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZElt
YWdlR2VuZXJhdGVkSW1hZ2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVy
c2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2
NTcyODdiOWM2Yzg2ZTMzMzM3NjI3NDQ5YWE1ZWZmMTdlNDRhMDUuLjlmMGM1MzRkZWViZjQ5NjI1
YWU2MTA0Zjg3NGMxNzlkZTg3ZWRmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNTcsNyArMjE1Nyw3IEBACiAJCTcyNEVE
MzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0Mg
LyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFE
QzgwRDg0MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBB
OTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkw
IC8qIE5hdGl2ZUltYWdlUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjZENTZF
MjI1M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8q
IFBsYXRmb3JtSW1hZ2VQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4
MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5
OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTkzNiw2ICs5OTM2
LDcgQEAKIAkJNzI0RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFWFRCbGVuZE1pbk1heC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0
aXZpdHlTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNEVFNTRGMURDN0YyNUIwMEE5
MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFn
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyNjZGMDEzMjI0MUJDRTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFu
aW1hdG9yRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9y
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5
NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5ODAwODMzOTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5
QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk0Niw3ICs5OTQ3LDcgQEAKIAkJNzI2
NkYwMjgyMjQzMTIwMzAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9u
SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbklt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMjkyMjQzMTJCMTAwODMz
OTc1IC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyNjZGMDJBMjI0MzE0OUIwMDgzMzk3NSAvKiBTVkdBbmltYXRlZFByb3BlcnR5
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogTmF0aXZl
SW1hZ2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VQdHIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1h
Z2VQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZVB0ci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNS
R0IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JH
Qi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNjM2MSw4ICsyNjM2Miw4IEBACiAJCQkJMDdCOTNGRjkyM0I5MkFB
QTAwMzZGOEVBIC8qIE1JTUVUeXBlQ2FjaGUuaCAqLywKIAkJCQkzMTRCRTNBNDFCMzEwM0ZCMDAx
NDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCAqLywKIAkJCQkzMTRCRTNBNTFC
MzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCisJCQkJNzI1
MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZG
NjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKLQkJCQk3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogTmF0aXZlSW1hZ2VQdHIuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0
MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8q
IFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNh
bFN0YXRlLmNwcCAqLywKQEAgLTI2MzczLDYgKzI2Mzc0LDcgQEAKIAkJCQlBOEZBNkU1QjBFNENG
REVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQx
QyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFF
MDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8sCisJCQkJNzI2RDU2RTEyNTNB
RTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2VQdHIuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNG
ODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMw
MDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdF
MjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTMzMzg0LDcg
KzMzMzg2LDYgQEAKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZU5v
ZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyog
TmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAyRUY5
MCAvKiBOYXRpdmVJbWFnZVB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2
QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5
QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKQEAgLTMzNjEwLDYgKzMzNjExLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRD
QTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU1MDY0MEFGMjQwNzU4MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVy
QmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI2RDU2RTIyNTNBRTI4RDAwMDJFRjkwIC8q
IFBsYXRmb3JtSW1hZ2VQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMw
MEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1
NjJGOTYxMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMGU3
ODEwMDM5MTdlNmZkMmEyMjY4MDM3NjU2NzE0ODc4OTk1N2Q4NS4uNjE4Y2M1MjhhZjI1YzZjYTBm
NWQzMmY4Y2UxMGM5ZDJlZjM2ZTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gcGxheWVyKCktPmhhc1ZpZGVv
KCkgJiYgcGxheWVyKCktPmhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKTsKIH0KIAotTmF0aXZlSW1h
Z2VQdHIgSFRNTFZpZGVvRWxlbWVudDo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IEhUTUxWaWRlb0VsZW1lbnQ6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKQogewogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhNjYzODgxYWZkMjZiZGZlMGUw
ZDBkN2YxOWYwYTY3YjM1ZjM4ZTlmLi4yYzFlNWQ5OTcyYzFjODc2Y2I5MzNkZjg1YWI4YjM2NGJl
MDEzMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyAr
NzUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwg
YWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKTsKIAogICAgIC8vIFVzZWQgYnkgV2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0
dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgogICAgIC8vIFNlZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQ
bGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGRlZmluZWQgaW4gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAKaW5kZXggNmE4MGI4NDYwMGUwYTJiYjA1NTUyMzk1NWZlOWNjNjBhOWFlYzNjYi4u
NzdlNjA0ZmQ5NjAxZTUyODk4MzdiZDJmOTI1OTA1ZDFlMjZhZTIxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAKQEAgLTE2MzUsOCArMTYzNSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAg
ICAgY2hlY2tPcmlnaW4oJnZpZGVvKTsKIAogI2lmIFVTRShDRykKLSAgICBpZiAoTmF0aXZlSW1h
Z2VQdHIgaW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKLSAgICAg
ICAgYy0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgp
LCB2aWRlby52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CisgICAgaWYgKGF1dG8g
aW1hZ2UgPSB2aWRlby5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgYy0+
ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgRmxvYXRTaXplKHZpZGVvLnZpZGVvV2lkdGgoKSwgdmlk
ZW8udmlkZW9IZWlnaHQoKSksIGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICBpZiAocmVjdENv
bnRhaW5zQ2FudmFzKGRzdFJlY3QpKQogICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygp
OwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0
SW5kaWNhdG9yV2luZG93Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRv
cldpbmRvdy5tbQppbmRleCAxN2JhNTFmZTBlNmNlNzFkOGM5YzU4YTBiMDczODJmNjZjZWZiZTA4
Li40MDRjZmE1ZjhhZjgyNzlkOTBmMzkxYWU0NmE5ODVlZjk2NDZjNDUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KQEAgLTE2MSw3ICsxNjEs
NyBAQCBzdGF0aWMgYm9vbCBpbmRpY2F0b3JXYW50c01hbnVhbEFuaW1hdGlvbihjb25zdCBUZXh0
SW5kaWNhdG9yJiBpbmRpY2F0b3IpCiAKICAgICBGbG9hdFNpemUgY29udGVudHNJbWFnZUxvZ2lj
YWxTaXplID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5zaXplKCk7CiAgICAgY29u
dGVudHNJbWFnZUxvZ2ljYWxTaXplLnNjYWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudElt
YWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1h
Z2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb250ZW50c0ltYWdlOwogICAgIGlmIChpbmRp
Y2F0b3JXYW50c0NvbnRlbnRDcm9zc2ZhZGUoKl90ZXh0SW5kaWNhdG9yKSkKICAgICAgICAgY29u
dGVudHNJbWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KCkt
Pm5hdGl2ZUltYWdlKCk7CiAgICAgZWxzZQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyBib29s
IGluZGljYXRvcldhbnRzTWFudWFsQW5pbWF0aW9uKGNvbnN0IFRleHRJbmRpY2F0b3ImIGluZGlj
YXRvcikKICAgICAgICAgW3RleHRMYXllciBzZXRCb3JkZXJDb2xvcjpib3JkZXJDb2xvci5nZXQo
KV07CiAgICAgICAgIFt0ZXh0TGF5ZXIgc2V0Qm9yZGVyV2lkdGg6Ym9yZGVyV2lkdGhdOwogICAg
ICAgICBbdGV4dExheWVyIHNldERlbGVnYXRlOltXZWJBY3Rpb25EaXNhYmxpbmdDQUxheWVyRGVs
ZWdhdGUgc2hhcmVkXV07Ci0gICAgICAgIFt0ZXh0TGF5ZXIgc2V0Q29udGVudHM6KF9fYnJpZGdl
IGlkKWNvbnRlbnRzSW1hZ2UuZ2V0KCldOworICAgICAgICBbdGV4dExheWVyIHNldENvbnRlbnRz
OihfX2JyaWRnZSBpZCljb250ZW50c0ltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwogCiAg
ICAgICAgIFJldGFpblB0cjxDQVNoYXBlTGF5ZXI+IG1hc2tMYXllciA9IGFkb3B0TlMoW1tDQVNo
YXBlTGF5ZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgW21hc2tMYXllciBzZXRQYXRoOnRyYW5z
bGF0ZWRQYXRoLnBsYXRmb3JtUGF0aCgpXTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPENBS2V5ZnJhbWVBbmltYXRpb24+IGNyZWF0ZUJvdW5jZUFuaW1hdGlvbihDRlRpbWVJ
bnRlcnZhbCBkdXJhdAogc3RhdGljIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcmVhdGVD
b250ZW50Q3Jvc3NmYWRlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uLCBUZXh0SW5k
aWNhdG9yJiB0ZXh0SW5kaWNhdG9yKQogewogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9u
PiBjcm9zc2ZhZGVBbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5
UGF0aDpAImNvbnRlbnRzIl07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1h
Z2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5uYXRpdmVJbWFnZSgpOworICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBjb250ZW50c0ltYWdlID0gdGV4dEluZGljYXRvci5jb250ZW50
SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIFtjcm9zc2ZhZGVB
bmltYXRpb24gc2V0VG9WYWx1ZTooX19icmlkZ2UgaWQpY29udGVudHNJbWFnZS5nZXQoKV07CiAg
ICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRGaWxsTW9kZTprQ0FGaWxsTW9kZUZvcndhcmRzXTsK
ICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldFJlbW92ZWRPbkNvbXBsZXRpb246Tk9dOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4
IGIzYjVjZjg5NDc2NjA0YzQzZDlmNDg1Nzc2MmU1NTMyNzgzZmRhMTcuLjg0M2YxZmUxOGZjOGZi
MzY3ZTIyNmE3OTE0NDM0MTVkZWRmN2I1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgQml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogewogfQogCi1CaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUmVmUHRyPE5hdGl2ZUltYWdlPiYm
IGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQog
ICAgICwgbV9zb3VyY2UoSW1hZ2VTb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSkpCiB7CkBA
IC0xMjgsNyArMTI4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6c2V0Q3VycmVudEZyYW1lRGVjb2Rp
bmdTdGF0dXNJZk5lY2Vzc2FyeShEZWNvZGluZ1N0YXR1cyBkZWNvZGkKICAgICBtX2N1cnJlbnRG
cmFtZURlY29kaW5nU3RhdHVzID0gZGVjb2RpbmdTdGF0dXM7CiB9CiAKLU5hdGl2ZUltYWdlUHRy
IEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFwSW1hZ2U6OmZyYW1l
SW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQog
ewogICAgIGlmICghZnJhbWVIYXNGdWxsU2l6ZU5hdGl2ZUltYWdlQXRJbmRleChpbmRleCwgc3Vi
c2FtcGxpbmdMZXZlbCkpIHsKICAgICAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAt
ICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZlbCB3YXMgJWQsIHJlc2FtcGxpbmddIiwgX19G
VU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0
aWNfY2FzdDxpbnQ+KGZyYW1lU3Vic2FtcGxpbmdMZXZlbEF0SW5kZXgoaW5kZXgpKSk7CkBAIC0x
NDIsMTcgKzE0MiwxNyBAQCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0
SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVfdCBpbmRleCwgU3Vic2FtcAogICAgIHJldHVybiBtX3Nv
dXJjZS0+ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0
bWFwSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4
dCkKIHsKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKDAsIFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwogfQogCi1OYXRpdmVJbWFnZVB0
ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3ND
b250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRD
b250ZXh0KQogewogICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQobV9j
dXJyZW50RnJhbWUsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIHRhcmdldENvbnRleHQpOwog
fQogCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRhdGlvbiwgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiB0YXJnZXRDb250ZXh0KQorUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6
cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmll
bnRhdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogewogICAgIGF1
dG8gaW1hZ2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSh0YXJnZXRDb250ZXh0KTsKIApA
QCAtMTcxLDE4ICsxNzEsMTggQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OnByZVRyYW5z
Zm9ybWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoYm9vbCByZXNwZWMKICAgICBGbG9hdFJl
Y3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBjb3JyZWN0ZWRTaXplRmxvYXQpOwogICAgIEZsb2F0
UmVjdCBzb3VyY2VSZWN0KEZsb2F0UG9pbnQoKSwgc291cmNlU2l6ZSk7CiAKLSAgICBidWZmZXIt
PmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RSZWN0LCBz
b3VyY2VSZWN0LCB7IG9yaWVudGF0aW9uIH0pOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdO
YXRpdmVJbWFnZSgqaW1hZ2UsIHNvdXJjZVNpemUsIGRlc3RSZWN0LCBzb3VyY2VSZWN0LCB7IG9y
aWVudGF0aW9uIH0pOwogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFn
ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAjaWYgVVNFKENHKQotTmF0aXZlSW1hZ2VQdHIgQml0
bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gQml0bWFw
SW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICBzaXplX3QgY291bnQgPSBmcmFtZUNv
dW50KCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChpLCBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCB0YXJnZXRDb250ZXh0KTsKLSAgICAgICAgaWYgKGltYWdlICYm
IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSkgPT0gc2l6ZSkKKyAgICAgICAgaWYgKGltYWdlICYmIGlt
YWdlLT5zaXplKCkgPT0gc2l6ZSkKICAgICAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAK
QEAgLTE5MCwxNCArMTkwLDE0IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljCiAgICAgcmV0dXJu
IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZCgwLCBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCB0YXJnZXRDb250ZXh0KTsKIH0KIAotVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBCaXRtYXBJ
bWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkKK1ZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBC
aXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKCkKIHsKLSAgICBWZWN0b3I8TmF0aXZlSW1h
Z2VQdHI+IGltYWdlczsKKyAgICBWZWN0b3I8UmVmUHRyPE5hdGl2ZUltYWdlPj4gaW1hZ2VzOwog
ICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAoYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VB
dEluZGV4Q2FjaGVJZk5lZWRlZChpKSkKLSAgICAgICAgICAgIGltYWdlcy5hcHBlbmQoaW1hZ2Up
OworICAgICAgICAgICAgaW1hZ2VzLmFwcGVuZChXVEZNb3ZlKGltYWdlKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGltYWdlczsKQEAgLTIxMSwxMCArMjExLDEwIEBAIGJvb2wgQml0bWFwSW1hZ2U6
Om5vdFNvbGlkQ29sb3IoKQogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLXN0YXRpYyBp
bmxpbmUgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgaW5saW5lIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxl
ciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJ
bWFnZVNpemUoaW1hZ2UpOworICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IGltYWdl
LnNpemUoKTsKICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0
KCkpCiAgICAgICAgIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBzdWJzYW1wbGVkSW1hZ2VTaXplLnRy
YW5zcG9zZWRTaXplKCk7CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlcwogICAgIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwgPSBtX2FsbG93U3Vic2FtcGxpbmcg
PyBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVGYWN0b3IoY29udGV4dCwgc2NhbGVGYWN0b3JGb3JE
cmF3aW5nKSA6IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAgICAgTE9HKEltYWdlcywgIkJp
dG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZlbCA9ICVkIHNjYWxl
RmFjdG9yRm9yRHJhd2luZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNv
dXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4obV9jdXJy
ZW50U3Vic2FtcGxpbmdMZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy53aWR0aCgpLCBzY2Fs
ZUZhY3RvckZvckRyYXdpbmcuaGVpZ2h0KCkpOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBpZiAob3B0aW9ucy5kZWNvZGlu
Z01vZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykgewogICAgICAgICBBU1NFUlQo
IWNhbkFuaW1hdGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50RnJhbWUgfHwgbV9hbmlt
YXRpb25GaW5pc2hlZCk7CkBAIC0zMjIsOSArMzIyLDkgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXMKICAgICBhdXRvIG9yaWVudGF0aW9uID0gb3B0aW9ucy5vcmllbnRhdGlvbigpOwogICAgIGlm
IChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpIHsKICAgICAgICAg
b3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0g
ICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3Qs
IEludFNpemUoc291cmNlU2l6ZShvcmllbnRhdGlvbikpLCB7IG9wdGlvbnMsIG9yaWVudGF0aW9u
IH0pOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwg
c3JjUmVjdCwgSW50U2l6ZShzb3VyY2VTaXplKG9yaWVudGF0aW9uKSksIHsgb3B0aW9ucywgb3Jp
ZW50YXRpb24gfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwg
Y29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmllbnRhdGlv
bikpLCBvcHRpb25zKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgY29udGV4dCwg
ZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc291cmNlU2l6ZShvcmllbnRhdGlvbikpLCBvcHRp
b25zKTsKIAogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5n
U3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDRlNzM0OGMyMDAwMjdlMDAxNTZiN2M1
YTFmZGEzNDM2OGFjN2MxMjMuLjQzMTgxZmY5OWQyNTk0MTk4ODE2ZGQ5NTY2ZDc5NDkxN2I0NGNl
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aApAQCAtNTMsNyArNTMsMTEgQEAgY2xhc3MgVGltZXI7CiAKIGNsYXNzIEJpdG1hcEltYWdlIGZp
bmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpdG1hcEltYWdl
PiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2Jz
ZXJ2ZXIgPSBudWxscHRyKQorICAgIHN0YXRpYyBSZWY8Qml0bWFwSW1hZ2U+IGNyZWF0ZShQbGF0
Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBu
dWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2Uo
TmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKSwgb2JzZXJ2ZXIpKTsK
KyAgICB9CisgICAgc3RhdGljIFJlZjxCaXRtYXBJbWFnZT4gY3JlYXRlKFJlZlB0cjxOYXRpdmVJ
bWFnZT4mJiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBudWxscHRyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQml0bWFwSW1hZ2UoV1RGTW92ZShu
YXRpdmVJbWFnZSksIG9ic2VydmVyKSk7CiAgICAgfQpAQCAtMTM1LDIzICsxMzksMjMgQEAgcHVi
bGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSBvdmVycmlkZTsK
LSAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFw
aGljc0NvbnRleHQqID0gbnVsbHB0cikgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgcHJl
VHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRh
dGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gcHJlVHJhbnNmb3JtZWROYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZShib29sIHJlc3BlY3RPcmllbnRhdGlvbiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogI2lmIFVTRShDRykKLSAgICBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0
cj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpIG92ZXJyaWRlOworICAgIFZlY3RvcjxSZWZQdHI8TmF0aXZlSW1hZ2U+PiBmcmFtZXNOYXRp
dmVJbWFnZXMoKTsKICNlbmRpZgogCiAgICAgdm9pZCBpbWFnZUZyYW1lQXZhaWxhYmxlQXRJbmRl
eChzaXplX3QpOwogICAgIHZvaWQgZGVjb2RlKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKIHByaXZh
dGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiwgSW1h
Z2VPYnNlcnZlciogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBCaXRtYXBJbWFnZShS
ZWZQdHI8TmF0aXZlSW1hZ2U+JiYsIEltYWdlT2JzZXJ2ZXIqID0gbnVsbHB0cik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKIAotICAg
IE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkgeyByZXR1cm4g
bV9zb3VyY2UtPmZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsgfQotICAgIE5hdGl2ZUltYWdlUHRy
IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVs
bHB0cik7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgpIHsgcmV0dXJuIG1fc291cmNlLT5mcmFtZUltYWdlQXRJbmRleChpbmRleCk7IH0KKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBH
cmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0
ZSBjYWNoZWQgZGF0YS4gV2hlbiB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAg
ICAvLyB0aGUgZW50aXJlIGZyYW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291
cmNlIHRvIGRlc3Ryb3kKQEAgLTE5OCw3ICsyMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB0aWZmUmVwcmVzZW50
YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiYpOworICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IHRpZmZSZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8UmVmUHRyPE5hdGl2ZUltYWdl
Pj4mKTsKICNlbmRpZgogCiAgICAgdm9pZCBjbGVhclRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXgg
ODY5NzM5NWZhNGM4ZDA4NTFjN2I3NzkwNDA2ZTYxYzkxOGZjZWE1MC4uOWUyNzA5ZGQzYjIwODU5
ZmE4OWM3MjkyM2MxYTkyMzRjMzA3OGQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMTE1LDcgKzExNSw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fYmFja2VuZCA/IG1fYmFja2VuZC0+ZXh0
ZXJuYWxNZW1vcnlDb3N0KCkgOiAwOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciA9IENvcHlCYWNraW5nU3Rv
cmUpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25z
dCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNr
ZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VCdWZm
ZXImPigqdGhpcykuZmx1c2hEcmF3aW5nQ29udGV4dCgpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRv
TmF0aXZlSW1hZ2UoKSBvdmVycmlkZQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9O
YXRpdmVJbWFnZSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRl
eHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCmluZGV4IDFjMDA4OWRlZDBlZTc1MTNjMThmOTRkMzJmYTM3NWRlZTY4ZmY5
MmUuLmM0OGVkOGI3NjdiYzUzMjYxMTk5MzUyZDM0NzU0ZTliZjFlYjU5ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApA
QCAtNzMxLDE3ICs3MzEsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChj
b25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5z
LmNsZWFyKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAg
IG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKTsKKyAgICBpZiAobV9pbXBsICYmIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdl
KGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSkKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAotICAgIHBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICBkcmF3UGxhdGZvcm1JbWFn
ZShpbWFnZS5wbGF0Zm9ybUltYWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpAQCAtNzYwLDcgKzc1OCw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2lt
cGwpCisgICAgaWYgKG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAg
ICAgcmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBv
cHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0
aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0
eSgpKTsKQEAgLTc3Miw3ICs3NzAsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlmIChtX2ltcGwgJiYgaW1hZ2UuaXNQ
REZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdl
KGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7
CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CkBA
IC03ODUsNyArNzgzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5n
OwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYmIGltYWdlLmlzUERGRG9jdW1l
bnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwg
ZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIG9wdGlv
bnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJ
bWFnZTo6U3RyZXRjaFRpbGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMGQxY2E5MmQ2MDQ1ZWIzN2E3OGQzZTE4OTdj
MjZmNDJiOWM3NmYzYS4uNjE0MzMwMGM4OGIyZDdlYmNkOWVkYjVjNmNmM2VmYThiZjlkMzcwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKQEAgLTM3OSw3ICszNzksOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBk
cmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwpAQCAtNjUwLDggKzY1MSw2IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmLCBjb25zdCBDb2xvciYpOwogCi0gICAgdm9pZCBwbGF0Zm9ybURyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKTsKLQogICAgIEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5kc0Fu
ZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcs
IENvbG9yJik7CiAKICAgICBmbG9hdCBkYXNoZWRMaW5lQ29ybmVyV2lkdGhGb3JTdHJva2VXaWR0
aChmbG9hdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yLmgKaW5kZXgg
YmI5YjBjOWZiMWU2MzlkOTlmOTgzN2ZlMDZkZjBhYzcwMjk2Yzk3Mi4uZjRiNTJhYzVhMzdlNmM2
YWQ5NGRjNmE3YmNhNjc2NWJlNjA4ZDdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRy
YWN0b3IuaApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogI2lmIFVTRShDQUlSTykKICAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBtX2ltYWdlU3VyZmFjZTsKICNlbGlmIFVTRShDRykKLSAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwotICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBtX2RlY29kZWRJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fY2dJbWFnZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fZGVjb2RlZEltYWdlOwogICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IG1fcGl4ZWxEYXRhOwogICAgIFVuaXF1ZUFycmF5PHVpbnQ4X3Q+IG1fZm9ybWFs
aXplZFJHQkE4RGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDM1MzZkMmYzYjczY2Q0ODhl
OThlYzJlOWZkZTI0OGY4MjM4YzM5Y2UuLjQ0ZDUxYzlhNjgxN2MxNWY4NjJhMTk4ZDUxMjI5NmJl
Zjk3NzI5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTc0LDcgKzc0LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVs
ZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFs
IGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCmluZGV4IGI1OTYwYWQ1ZmY3YzRkYTU2
ZGY0ZjVhNGE3OWFkZDk4ODQxMzZkN2QuLjVjMjg2ODFkNDQxYzkwYjFlYzRlMWQxOTBiZmQwYWFm
MGYxZGNjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lj
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1J
bWFnZVB0ci5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNlbGlm
IFBMQVRGT1JNKE1BQykKIE9CSkNfQ0xBU1MgTlNJbWFnZTsKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogTWFrZSB0aGlz
IHdvcmsgZm9yIG5vbi1pT1MgcG9ydHMgYW5kIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TX0ZBTUlM
WSktZ3VhcmQuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJY29uPiBjcmVhdGVJ
Y29uRm9ySW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JJbWFnZShjb25zdCBQbGF0Zm9ybUltYWdl
UHRyJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY0LDcgKzY0LDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgSWNvbihjb25z
dCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mKTsKKyAgICBJY29uKGNvbnN0IFBsYXRmb3JtSW1hZ2VQ
dHImKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOwogI2VsaWYgUExBVEZP
Uk0oTUFDKQogICAgIEljb24oTlNJbWFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKaW5kZXggNGI5YmVlZDg2NTdlZWI5ZmFiNGQ0NWNjYWRkMTA4YWZiMGQyM2Zh
Yi4uNDM2YjM3ZDZjOGVjNmYwMGY0ZmViNGRkMzZmNGEyOTIzYzdmOTZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVk
ZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisj
aW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0
Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0xNTMsMTAgKzE1
MywxMCBAQCBwdWJsaWM6CiAKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5k
VGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdl
UHRyIG5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKSB7IHJldHVy
biBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVs
bHB0cjsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgcHJlVHJhbnNmb3JtZWROYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZShib29sID0gdHJ1ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9
IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRy
IG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQq
ID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2
ZUltYWdlPiBuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBwcmVUcmFu
c2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wgPSB0cnVlLCBjb25zdCBHcmFw
aGljc0NvbnRleHQqID0gbnVsbHB0cikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAg
IC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGEx
NzVkZGE1NGE2MzRlOWY3ODM4NTk4ZDBlZGFiMGM4NjI4MjQ5YWEuLjkxOGJjYjNhZWI0MmU0M2Y2
Mzc0MjJmM2I5NmJmMWY4MTcxNWFiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCYWNraW5nU3RvcmU+KG5l
dyBJbWFnZUJhY2tpbmdTdG9yZShvdGhlcikpOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRy
IGltYWdlKCkgY29uc3Q7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSgpIGNvbnN0OwogCiAg
ICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IGUzYmJiNDI2
M2FhMDczMWZmMDM4MTk5NWI1ZGU1YmQzYTU1NThiZTEuLjI2ZGRjOWI2N2VkZTU3ZTk1Mzg4Y2Zl
OWNlMGNjYTY1Mzk5YjAwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVm
ZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1h
Z2VCdWZmZXIpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2
ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7CiAgICAg
cmV0dXJuIGltYWdlQnVmZmVyLT5zaW5rSW50b05hdGl2ZUltYWdlKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBlNzM2YWY4MjBh
NWNlZDYzYWU3NTE3NmEyOTk0MjMyYmRhZGYyYTQ3Li45MDc4OGVlMzVmZjdmMWI2YzZkODc1ZTQ1
YmNjYzU5NGY4ZjgwMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc2l6
ZV90IG1lbW9yeUNvc3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzaXplX3QgZXh0ZXJuYWxN
ZW1vcnlDb3N0KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5
TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBS
ZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9y
ZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAw
OwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNv
bnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgpA
QCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KSA9IDA7CiAKLSAgICBzdGF0aWMgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9O
YXRpdmVJbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+KTsKKyAgICBzdGF0aWMgUmVm
UHRyPE5hdGl2ZUltYWdlPiBzaW5rSW50b05hdGl2ZUltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZT4gc2lu
a0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBQcmVzZXJ2ZVJlc29sdXRp
b24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKTsKICAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3Vt
aW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwpAQCAt
MTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbWFnZUJ1ZmZlcigpID0g
ZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJbWFn
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJ
bWFnZSgpID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVz
ZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0MTczYTliZjA5NDllYzNkMmQ2N2U4
MDE3YmQ3MGYyNTFmNjk4M2ExLi5mMWYzNjdjMDZhMmEwYzlkOTkxM2M5YzkyMzZjMTk3MzZlZGU1
OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OmNhbGN1bGF0ZUJhY2tlbmRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgcmUKICAgICByZXR1cm4gYmFja2VuZFNpemU7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdl
QnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+
IEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFnZSgpCiB7CiAgICAgcmV0dXJu
IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4
IGNiNTg3MjU2N2YwODgzYjViZDAyZTBlZWNiOGNlZmRiZTcxMGE4ZWMuLmVkM2Y4YjViY2Y1OGU0
Mjc4NTY3ZDE4NmZiNjVjODQwMTYyN2M4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09w
dGlvbnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIu
aCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzcs
MTMgKzc3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29u
c3QgeyByZXR1cm4gNCAqIG1fYmFja2VuZFNpemUuYXJlYSgpLnVuc2FmZUdldCgpOyB9CiAgICAg
dmlydHVhbCBzaXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gMDsgfQog
Ci0gICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRy
PEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBj
b25zdCA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIHNpbmtJbnRvTmF0aXZl
SW1hZ2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4g
c2lua0ludG9OYXRpdmVJbWFnZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRy
PEltYWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDcxMDRkMDcxOTRmMzgxNTliMzNi
ZWE2YWFlZDg4NWQ3MDliZDk4MTcuLmU0YWE1MjQ0MzU3NWQ0NWRhNjRhYmI1OWFlYjY5MTJiZGRh
NWI3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgogI2luY2x1
ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUlt
YWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZVB0ci5oIgogI2luY2x1ZGUgPHd0Zi9PcHRp
b25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZnJh
bWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgTmF0aXZl
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERl
Y29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOworICAgIHZpcnR1
YWwgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RnJhbWUuY3BwCmluZGV4IDgzYjc4YjZlYzAwNmZjNTQ3NzQ1MmZmZDA4MTUyN2IyZGQ5MTYxODQu
LmNjM2I2MzYwMjk1Y2UwYzViOWRiMTQxNTA0Y2VjYTYyNmVkYmE0ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIHVuc2lnbmVkIEltYWdlRnJhbWU6OmNsZWFySW1hZ2UoKQogCiAgICAgdW5zaWduZWQgZnJh
bWVCeXRlcyA9IHRoaXMtPmZyYW1lQnl0ZXMoKTsKIAotICAgIGNsZWFyTmF0aXZlSW1hZ2VTdWJp
bWFnZXMobV9uYXRpdmVJbWFnZSk7CisgICAgbV9uYXRpdmVJbWFnZS0+Y2xlYXJTdWJpbWFnZXMo
KTsKICAgICBtX25hdGl2ZUltYWdlID0gbnVsbHB0cjsKICAgICBtX2RlY29kaW5nT3B0aW9ucyA9
IERlY29kaW5nT3B0aW9ucygpOwogCkBAIC0xMjEsNyArMTIxLDcgQEAgQ29sb3IgSW1hZ2VGcmFt
ZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKICAgICBpZiAoIWhhc05hdGl2ZUltYWdl
KCkgfHwgbV9zaXplICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwog
Ci0gICAgcmV0dXJuIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKG1fbmF0aXZlSW1h
Z2UpOworICAgIHJldHVybiBtX25hdGl2ZUltYWdlLT5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZS5o
CmluZGV4IDU0YTljOWRmMzNiNGQzM2IxMjc1ZjkxNDZmZjg4NDJlMzdjMDAwNzEuLmFhNzNhZTM2
Mzg5ZWMyZmFjNDIxZWMzNWMzZTZjNjcxODExZTdiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMoKSBjb25zdCB7IHJldHVybiBoYXNOYXRpdmVJbWFnZSgp
ID8gKHNpemUoKS5hcmVhKCkgKiBzaXplb2YodWludDMyX3QpKS51bnNhZmVHZXQoKSA6IDA7IH0K
ICAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiBt
X3N1YnNhbXBsaW5nTGV2ZWw7IH0KIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZTsgfQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4g
bmF0aXZlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlOyB9CiAKICAgICB2b2lk
IHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRh
dGlvbiA9IG9yaWVudGF0aW9uOyB9OwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24o
KSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CkBAIC04OCw3ICs4OCw3IEBAIHByaXZh
dGU6CiAgICAgRGVjb2RpbmdTdGF0dXMgbV9kZWNvZGluZ1N0YXR1cyB7IERlY29kaW5nU3RhdHVz
OjpJbnZhbGlkIH07CiAgICAgSW50U2l6ZSBtX3NpemU7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBt
X25hdGl2ZUltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9uYXRpdmVJbWFnZTsKICAg
ICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQgfTsKICAgICBEZWNvZGluZ09wdGlvbnMgbV9kZWNvZGluZ09wdGlvbnM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRl
eCBmOGUyMDI4YzNjM2IzZjYxNmM2YTEzNzhhOTRlZmRmYzRlNWIxOTQ5Li4xNDgwMjFjZWVlNDU1
YWViYjMwNWRmZjM1NjEzZWM0NzQzM2Y1NTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC00OSw3ICs0OSw3IEBAIEltYWdlU291
cmNlOjpJbWFnZVNvdXJjZShCaXRtYXBJbWFnZSogaW1hZ2UsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvCiB7CiB9CiAKLUltYWdlU291cmNlOjpJbWFnZVNvdXJjZShOYXRpdmVJ
bWFnZVB0ciYmIG5hdGl2ZUltYWdlKQorSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKFJlZlB0cjxO
YXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSkKICAgICA6IG1fcnVuTG9vcChSdW5Mb29wOjpjdXJy
ZW50KCkpCiB7CiAgICAgbV9mcmFtZUNvdW50ID0gMTsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lk
IEltYWdlU291cmNlOjpncm93RnJhbWVzKCkKICAgICAgICAgbV9mcmFtZXMuZ3JvdyhuZXdTaXpl
KTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNldE5hdGl2ZUltYWdlKFJlZlB0cjxO
YXRpdmVJbWFnZT4mJiBuYXRpdmVJbWFnZSkKIHsKICAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgp
ID09IDEpOwogICAgIEltYWdlRnJhbWUmIGZyYW1lID0gbV9mcmFtZXNbMF07CkBAIC0yNDUsOCAr
MjQ1LDggQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSkKICAgICBmcmFtZS5tX25hdGl2ZUltYWdlID0gV1RGTW92ZShuYXRpdmVJ
bWFnZSk7CiAKICAgICBmcmFtZS5tX2RlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkNv
bXBsZXRlOwotICAgIGZyYW1lLm1fc2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShmcmFtZS5tX25hdGl2
ZUltYWdlKTsKLSAgICBmcmFtZS5tX2hhc0FscGhhID0gbmF0aXZlSW1hZ2VIYXNBbHBoYShmcmFt
ZS5tX25hdGl2ZUltYWdlKTsKKyAgICBmcmFtZS5tX3NpemUgPSBmcmFtZS5tX25hdGl2ZUltYWdl
LT5zaXplKCk7CisgICAgZnJhbWUubV9oYXNBbHBoYSA9IGZyYW1lLm1fbmF0aXZlSW1hZ2UtPmhh
c0FscGhhKCk7CiB9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ1N0
YXR1cyBkZWNvZGluZ1N0YXR1cykKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEltYWdlU291cmNl
OjpjYWNoZU1ldGFkYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogCiAgICAgaWYgKGZyYW1lLm1fZGVjb2RpbmdPcHRpb25zLmhhc1NpemVGb3JEcmF3
aW5nKCkpIHsKICAgICAgICAgQVNTRVJUKGZyYW1lLmhhc05hdGl2ZUltYWdlKCkpOwotICAgICAg
ICBmcmFtZS5tX3NpemUgPSBuYXRpdmVJbWFnZVNpemUoZnJhbWUubmF0aXZlSW1hZ2UoKSk7Cisg
ICAgICAgIGZyYW1lLm1fc2l6ZSA9IGZyYW1lLm5hdGl2ZUltYWdlKCktPnNpemUoKTsKICAgICB9
IGVsc2UKICAgICAgICAgZnJhbWUubV9zaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4
KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKIApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgSW1h
Z2VTb3VyY2U6OmNhY2hlTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluCiAgICAgICAgIGZyYW1lLm1fZHVyYXRpb24gPSBtX2RlY29kZXItPmZy
YW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVO
YXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYgZGVjb2RpbmdPcHRpb25zLCBEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1cykKK3Zv
aWQgSW1hZ2VTb3VyY2U6OmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXgoUGxhdGZvcm1JbWFnZVB0
ciYmIHBsYXRmb3JtSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2Rp
bmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMu
c2l6ZSgpKTsKICAgICBJbWFnZUZyYW1lJiBmcmFtZSA9IG1fZnJhbWVzW2luZGV4XTsKQEAgLTI5
Myw3ICsyOTMsNyBAQCB2b2lkIEltYWdlU291cmNlOjpjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChO
YXRpdmVJbWFnZVB0ciYmIG5hdGl2ZUltYWdlLCBzaXplX3QgaQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBNb3ZlIHRoZSBuZXcgaW1hZ2UgdG8gdGhlIGNhY2hlLgotICAgIGZyYW1lLm1fbmF0
aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKKyAgICBmcmFtZS5tX25hdGl2ZUltYWdl
ID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKICAgICBmcmFt
ZS5tX2RlY29kaW5nT3B0aW9ucyA9IGRlY29kaW5nT3B0aW9uczsKICAgICBjYWNoZU1ldGFkYXRh
QXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZGVjb2RpbmdTdGF0dXMpOwogCkBAIC0z
MDEsNyArMzAxLDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6Y2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgo
TmF0aXZlSW1hZ2VQdHImJiBuYXRpdmVJbWFnZSwgc2l6ZV90IGkKICAgICBkZWNvZGVkU2l6ZUlu
Y3JlYXNlZChmcmFtZS5mcmFtZUJ5dGVzKCkpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpjYWNo
ZU5hdGl2ZUltYWdlQXRJbmRleEFzeW5jKE5hdGl2ZUltYWdlUHRyJiYgbmF0aXZlSW1hZ2UsIHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0
dXMpCit2b2lkIEltYWdlU291cmNlOjpjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4QXN5bmMoUGxh
dGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0
aW9ucywgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgaWYgKCFpc0RlY29k
ZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQg
SW1hZ2VTb3VyY2U6OmNhY2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHIm
JiBuYXRpdmVJbWFnZSwgc2l6CiAgICAgQVNTRVJUKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpKTsK
IAogICAgIC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBuZXcgb25lCi0g
ICAgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoV1RGTW92ZShuYXRpdmVJbWFnZSksIGluZGV4LCBz
dWJzYW1wbGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMsIGRlY29kaW5nU3RhdHVzKTsKKyAgICBj
YWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFdURk1vdmUocGxhdGZvcm1JbWFnZSksIGluZGV4LCBz
dWJzYW1wbGluZ0xldmVsLCBkZWNvZGluZ09wdGlvbnMsIGRlY29kaW5nU3RhdHVzKTsKICAgICBM
T0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFtZSAlbGQgaGFz
IGJlZW4gY2FjaGVkXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgaW5kZXgpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBpbWFnZSB3aXRoIHRo
ZSByZWFkaW5lc3Mgb2YgdGhlIG5ldyBmcmFtZSBOYXRpdmVJbWFnZS4KQEAgLTM2Miw4ICszNjIs
OCBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAg
ICAgICAgICAgc3RhcnRpbmdUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAg
ICAgIC8vIEdldCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2Ugb24gdGhlIGRlY29kaW5nIHRocmVhZC4K
LSAgICAgICAgICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlID0gcHJvdGVjdGVkRGVjb2Rl
ci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoZnJhbWVSZXF1ZXN0LmluZGV4LCBmcmFtZVJlcXVl
c3Quc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVSZXF1ZXN0LmRlY29kaW5nT3B0aW9ucyk7Ci0gICAg
ICAgICAgICBpZiAobmF0aXZlSW1hZ2UpCisgICAgICAgICAgICBhdXRvIHBsYXRmb3JtSW1hZ2Ug
PSBwcm90ZWN0ZWREZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChmcmFtZVJlcXVlc3Qu
aW5kZXgsIGZyYW1lUmVxdWVzdC5zdWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2Rp
bmdPcHRpb25zKTsKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybUltYWdlKQogICAgICAgICAgICAg
ICAgIExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVs
ZCBoYXMgYmVlbiBkZWNvZGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIoKSwg
c291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0g
JXAgLSB1cmw6ICVzIFtkZWNvZGluZyBmb3IgZnJhbWUgJWxkIGhhcyBmYWlsZWRdIiwgX19GVU5D
VElPTl9fLCBwcm90ZWN0ZWRUaGlzLnB0cigpLCBzb3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJh
bWVSZXF1ZXN0LmluZGV4KTsKQEAgLTM3NSwxMiArMzc1LDEyIEBAIHZvaWQgSW1hZ2VTb3VyY2U6
OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgICAgICAgICBzbGVlcChtaW5EZWNv
ZGluZ0R1cmF0aW9uIC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRpbmdUaW1lKSk7CiAK
ICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGVkIGZyYW1lcyBvbiB0aGUgY3JlYXRpb24g
dGhyZWFkIHRvIGF2b2lkIHVwZGF0aW5nIHRoZSBNZW1vcnlDYWNoZSBmcm9tIGEgZGlmZmVyZW50
IHRocmVhZC4KLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIHBy
b3RlY3RlZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIsIHNvdXJjZVVSTCA9IHNvdXJj
ZVVSTC5pc29sYXRlZENvcHkoKSwgbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKSwg
ZnJhbWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMsIHByb3RlY3RlZERlY29kaW5nUXVldWUsIHByb3RlY3RlZERlY29kZXIs
IHNvdXJjZVVSTCA9IHNvdXJjZVVSTC5pc29sYXRlZENvcHkoKSwgcGxhdGZvcm1JbWFnZSA9IFdU
Rk1vdmUocGxhdGZvcm1JbWFnZSksIGZyYW1lUmVxdWVzdF0gKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgLy8gVGhlIHF1ZXVlIG1heSBoYXZlIGJlZW4gY2xvc2VkIGlmIGFmdGVyIHdlIGdv
dCB0aGUgZnJhbWUgTmF0aXZlSW1hZ2UsIHN0b3BBc3luY0RlY29kaW5nUXVldWUoKSB3YXMgY2Fs
bGVkLgogICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlLnB0cigpID09
IHByb3RlY3RlZFRoaXMtPm1fZGVjb2RpbmdRdWV1ZSAmJiBwcm90ZWN0ZWREZWNvZGVyLnB0cigp
ID09IHByb3RlY3RlZFRoaXMtPm1fZGVjb2RlcikgewogICAgICAgICAgICAgICAgICAgICBBU1NF
UlQocHJvdGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1ZXVlLmZpcnN0KCkgPT0gZnJhbWVSZXF1
ZXN0KTsKICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1pdFF1
ZXVlLnJlbW92ZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNh
Y2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoV1RGTW92ZShuYXRpdmVJbWFnZSksIGZyYW1lUmVx
dWVzdC5pbmRleCwgZnJhbWVSZXF1ZXN0LnN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lUmVxdWVzdC5k
ZWNvZGluZ09wdGlvbnMsIGZyYW1lUmVxdWVzdC5kZWNvZGluZ1N0YXR1cyk7CisgICAgICAgICAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNhY2hlUGxhdGZvcm1JbWFnZUF0SW5kZXhBc3luYyhX
VEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBmcmFtZVJlcXVlc3QuaW5kZXgsIGZyYW1lUmVxdWVzdC5z
dWJzYW1wbGluZ0xldmVsLCBmcmFtZVJlcXVlc3QuZGVjb2RpbmdPcHRpb25zLCBmcmFtZVJlcXVl
c3QuZGVjb2RpbmdTdGF0dXMpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VTb3VyY2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtmcmFt
ZSAlbGQgd2lsbCBub3QgY2FjaGVkXSIsIF9fRlVOQ1RJT05fXywgcHJvdGVjdGVkVGhpcy5wdHIo
KSwgc291cmNlVVJMLnV0ZjgoKS5kYXRhKCksIGZyYW1lUmVxdWVzdC5pbmRleCk7CiAgICAgICAg
ICAgICB9KTsKQEAgLTQ1NCw5ICs0NTQsOSBAQCBjb25zdCBJbWFnZUZyYW1lJiBJbWFnZVNvdXJj
ZTo6ZnJhbWVBdEluZGV4Q2FjaGVJZk5lZWRlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbQogICAg
ICAgICBpZiAoZnJhbWUuaGFzRnVsbFNpemVOYXRpdmVJbWFnZShzdWJzYW1wbGluZ0xldmVsKSkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAvLyBXZSBoYXZlIHRvIHBlcmZvcm0gc3luY2hy
b25vdXMgaW1hZ2UgZGVjb2RpbmcgaW4gdGhpcyBjb2RlLgotICAgICAgICBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZSA9IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSk7CisgICAgICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IG1f
ZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxW
YWx1ZSk7CiAgICAgICAgIC8vIENsZWFuIHRoZSBvbGQgbmF0aXZlIGltYWdlIGFuZCBzZXQgYSBu
ZXcgb25lLgotICAgICAgICBjYWNoZU5hdGl2ZUltYWdlQXRJbmRleChXVEZNb3ZlKG5hdGl2ZUlt
YWdlKSwgaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWxWYWx1ZSwgRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKTsKKyAgICAgICAgY2FjaGVQbGF0Zm9ybUltYWdlQXRJbmRl
eChXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbFZhbHVlLCBE
ZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpOwogICAgICAgICBicmVh
azsKICAgICB9CiAKQEAgLTY5NywxOSArNjk3LDIxIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldFRh
cmdldENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogfQogI2Vu
ZGlmCiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKK1JlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVy
biBpc0RlY29kZXJBdmFpbGFibGUoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKKyAgICBpZiAoIWlzRGVjb2Rl
ckF2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gTmF0aXZl
SW1hZ2U6OmNyZWF0ZShtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBz
dWJzYW1wbGluZ0xldmVsKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpmcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlU291
cmNlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIGZyYW1l
TWV0YWRhdGFBdEluZGV4PE5hdGl2ZUltYWdlUHRyPihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRp
dmVJbWFnZSkpOworICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleDxSZWZQdHI8TmF0aXZl
SW1hZ2U+PihpbmRleCwgKCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSkpOwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorUmVmUHRyPE5hdGl2
ZUltYWdlPiBJbWFnZVNvdXJjZTo6ZnJhbWVJbWFnZUF0SW5kZXhDYWNoZUlmTmVlZGVkKHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIHJldHVy
biBmcmFtZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8TmF0aXZlSW1hZ2VQdHI+KGluZGV4
LCAoJkltYWdlRnJhbWU6Om5hdGl2ZUltYWdlKSwgbnVsbHB0ciwgSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6TWV0YWRhdGFBbmRJbWFnZSwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1l
TWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5lZWRlZDxSZWZQdHI8TmF0aXZlSW1hZ2U+PihpbmRleCwg
KCZJbWFnZUZyYW1lOjpuYXRpdmVJbWFnZSksIG51bGxwdHIsIEltYWdlRnJhbWU6OkNhY2hpbmc6
Ok1ldGFkYXRhQW5kSW1hZ2UsIHN1YnNhbXBsaW5nTGV2ZWwpOwogfQogCiB2b2lkIEltYWdlU291
cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggZDk4ZWMwZTdmNmU1MmNlNTU4OWVkZDk5YjQyYzdh
ZDYzY2VkZjAxZC4uYTZmNGFiMTNkZWVmZGEzNjUyYmI5MzNjYjJlMjYyYTVmY2I2MDMyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VT
b3VyY2UoaW1hZ2UsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0
ciYmIG5hdGl2ZUltYWdlKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VTb3VyY2U+IGNyZWF0ZShSZWZQ
dHI8TmF0aXZlSW1hZ2U+JiYgbmF0aXZlSW1hZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KQEAg
LTEyNSwxMyArMTI1LDEzIEBAIHB1YmxpYzoKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgdm9pZCBz
ZXRUYXJnZXRDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCopOwogI2VuZGlmCi0gICAgTmF0
aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKLSAgICBOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJ
bmRleENhY2hlSWZOZWVkZWQoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCk7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0KTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCk7
CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBmcmFtZUltYWdlQXRJbmRleENhY2hlSWZOZWVkZWQo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CiAK
IHByaXZhdGU6CiAgICAgSW1hZ2VTb3VyY2UoQml0bWFwSW1hZ2UqLCBBbHBoYU9wdGlvbiA9IEFs
cGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKLSAgICBJbWFnZVNvdXJjZShOYXRp
dmVJbWFnZVB0ciYmKTsKKyAgICBJbWFnZVNvdXJjZShSZWZQdHI8TmF0aXZlSW1hZ2U+JiYpOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVCAoSW1hZ2VEZWNvZGVyOjoqZnVuY3RvcikoKSBj
b25zdD4KICAgICBUIG1ldGFkYXRhKGNvbnN0IFQmIGRlZmF1bHRWYWx1ZSwgT3B0aW9uYWw8VD4q
IGNhY2hlZFZhbHVlID0gbnVsbHB0cik7CkBAIC0xNTIsMTAgKzE1MiwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGVjb2RlZFNpemVSZXNldCh1bnNpZ25lZCBkZWNvZGVkU2l6ZSk7CiAgICAgdm9p
ZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWQoRW5jb2RlZERhdGFTdGF0dXMpOwogCi0gICAgdm9p
ZCBzZXROYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICB2b2lkIHNldE5hdGl2ZUlt
YWdlKFJlZlB0cjxOYXRpdmVJbWFnZT4mJik7CiAgICAgdm9pZCBjYWNoZU1ldGFkYXRhQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0
dXM6OkludmFsaWQpOwotICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZUF0SW5kZXgoTmF0aXZlSW1h
Z2VQdHImJiwgc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMm
LCBEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKLSAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2VBdEluZGV4QXN5bmMoTmF0aXZlSW1hZ2VQdHImJiwgc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0YXR1cyk7Cisg
ICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2VBdEluZGV4KFBsYXRmb3JtSW1hZ2VQdHImJiwgc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmLCBEZWNvZGluZ1N0
YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKTsKKyAgICB2b2lkIGNhY2hlUGxhdGZvcm1J
bWFnZUF0SW5kZXhBc3luYyhQbGF0Zm9ybUltYWdlUHRyJiYsIHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiwgRGVjb2RpbmdTdGF0dXMpOwogCiAgICAgc3Ry
dWN0IEltYWdlRnJhbWVSZXF1ZXN0OwogICAgIHN0YXRpYyBjb25zdCBpbnQgQnVmZmVyU2l6ZSA9
IDg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKaW5kZXggN2FhYTFlZmIzYTVlMzUzNjE2YjIyOWJiNWEzZjI3MGFkNWNhMTBjZi4uNTk1Njdk
MGMzOTkzMmIwZTdiMTdmYjY1YzcyZTc2ZGZhN2YxOTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTg1LDcgKzk4NSw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCogY29uCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWws
IGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllcjo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKaW5kZXggMzNjMWRjYTg4MjQxMDIwZjRmZDFkZjYyZjU2ZjBhY2U3NjA4ZjhhOC4uYTA1
NzhhZTAzZTcwN2M4NTU2OTY0YTUzNmU5YWI2NGE1M2U4NWNhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MzAsNyArNDMwLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZ
KTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAogICAg
IHVzaW5nIE1lZGlhUGxheWVyRW51bXM6Ok5ldHdvcmtTdGF0ZTsKICAgICBOZXR3b3JrU3RhdGUg
bmV0d29ya1N0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGMzNmMyZjU1NTU4YTZmNzNjNmU3NTQzNzlh
MzQzMTE0MDM4YjBiOTEuLjdlOTBjZGRkZmM4NzAxYmJjZGE3MmQ5NGFlNGRiOGYwZGEwMTBkYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgYywgY29uc3Qg
RmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29sIGNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCosIFBsYXRm
b3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xl
bnVtLCBib29sLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgTmF0aXZlSW1h
Z2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAg
ICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgp
IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVsb2FkKE1lZGlh
UGxheWVyOjpQcmVsb2FkKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2MWRkMTlmMTc0NGZiNWI2YzVjZThl
MTc0NmE3YmMzYWMyODQ4NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxOYXRpdmVJbWFnZT4gTmF0aXZlSW1h
Z2U6OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE5hdGl2ZUltYWdlKHBsYXRmb3JtSW1hZ2UpKTsKK30KKworUmVmPE5h
dGl2ZUltYWdlPiBOYXRpdmVJbWFnZTo6Y3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9y
bUltYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hdGl2ZUltYWdlKFdURk1vdmUo
cGxhdGZvcm1JbWFnZSkpKTsKK30KKworTmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKFBsYXRmb3Jt
SW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCisgICAgOiBtX3BsYXRmb3JtSW1hZ2UocGxhdGZvcm1J
bWFnZSkKK3sKK30KKworTmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIm
JiBwbGF0Zm9ybUltYWdlKQorICAgIDogbV9wbGF0Zm9ybUltYWdlKFdURk1vdmUocGxhdGZvcm1J
bWFnZSkpCit7Cit9CisKK05hdGl2ZUltYWdlOjp+TmF0aXZlSW1hZ2UoKQoreworICAgIGlmICht
X29ic2VydmVyICYmIG1fcGxhdGZvcm1JbWFnZSkKKyAgICAgICAgbV9vYnNlcnZlci0+bmF0aXZl
SW1hZ2VXaWxsQmVEZWxldGVkKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmgKaW5kZXggMDMzNDc1OTYwN2Y4ZjIwZGUzMTI0ODU5YTZmMGYwOTQ1
MWUxOGU1Yi4uY2IxNmMwZGEzYWUwYzk0NTJiNWQ0NTRjMGJjZjkxNDMzN2ZhZDU5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0yNywx
NiArMjcsNTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5o
IgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlUHRyLmgiCisj
aW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiICAgIAorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1j
bGFzcyBJbnRTaXplOwogCi1XRUJDT1JFX0VYUE9SVCBJbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwotYm9vbCBuYXRpdmVJbWFnZUhhc0FscGhhKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJik7Ci1Db2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOwotdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJik7CitjbGFzcyBOYXRpdmVJbWFnZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE5hdGl2ZUltYWdlPiB7CitwdWJsaWM6CisgICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIHB1
YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBuYXRpdmVJbWFnZVdpbGxCZURlbGV0ZWQoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSA9IDA7CisgICAgcHJvdGVjdGVkOgorICAgICAgICBPYnNlcnZlcigpID0gZGVmYXVs
dDsKKyAgICB9OwogCi19CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZjxOYXRpdmVJbWFn
ZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImKTsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQg
UmVmPE5hdGl2ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmKTsKKyAgICBzdGF0aWMg
V0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImKTsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgpOworCisgICAgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CisKKyAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuICFtX3BsYXRmb3JtSW1hZ2U7IH0KKyAgICBQbGF0Zm9ybUltYWdlUHRyJiBw
bGF0Zm9ybUltYWdlKCkgeyByZXR1cm4gbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1J
bWFnZTsgfQorCisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZShtX3BsYXRm
b3JtSW1hZ2UpOyB9CisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OworICAgIENvbG9yIHNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworCisgICAgdm9pZCBzZXRPYnNlcnZlcihPYnNlcnZl
ciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlciA9IG9ic2VydmVyOyB9CisgICAgdm9pZCBjbGVhclN1
YmltYWdlcygpOworICAgIAorcHJpdmF0ZToKKyAgICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdl
UHRyJik7CisgICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmKTsKKworICAgIFBsYXRm
b3JtSW1hZ2VQdHIgbV9wbGF0Zm9ybUltYWdlOworICAgIE9ic2VydmVyKiBtX29ic2VydmVyIHsg
bnVsbHB0ciB9OworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciB7IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNkNzdhODk4ZDM5ODczNjQxMTE3NGYxOWY3NTE0MDcxZDA3Yzk1ODIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgot
dHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSogQ0dJbWFnZVJlZjsKLSNlbGlmIFVTRShDQUlSTykKLSNp
bmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2VsaWYgVVNFKFdJTkdESSkKLSNpbmNsdWRlICJTaGFy
ZWRCaXRtYXAuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBVU0UoQ0cp
Ci10eXBlZGVmIFJldGFpblB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKLSNlbGlmIFVT
RShESVJFQ1QyRCkKLXR5cGVkZWYgQ09NUHRyPElEMkQxQml0bWFwPiBOYXRpdmVJbWFnZVB0cjsK
LSNlbGlmIFVTRShDQUlSTykKLXR5cGVkZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZl
SW1hZ2VQdHI7Ci0jZWxpZiBVU0UoV0lOR0RJKQotdHlwZWRlZiBSZWZQdHI8U2hhcmVkQml0bWFw
PiBOYXRpdmVJbWFnZVB0cjsKLSNlbmRpZgotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkyZDA3Zjk0
NGU5ZTM5OGZjZjUyNGZhMTllZjA0NTkxMTAxM2QxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2VQdHIuaApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5
cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7CisjZWxpZiBVU0UoQ0FJUk8pCisjaW5j
bHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNlbGlmIFVTRShXSU5HREkpCisjaW5jbHVkZSAiU2hhcmVk
Qml0bWFwLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENHKQor
dXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IFJldGFpblB0cjxDR0ltYWdlUmVmPjsKKyNlbGlmIFVT
RShESVJFQ1QyRCkKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIgPSBDT01QdHI8SUQyRDFCaXRtYXA+
OworI2VsaWYgVVNFKENBSVJPKQordXNpbmcgUGxhdGZvcm1JbWFnZVB0ciA9IFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+OworI2VsaWYgVVNFKFdJTkdESSkKK3VzaW5nIFBsYXRmb3JtSW1hZ2VQdHIg
PSBSZWZQdHI8U2hhcmVkQml0bWFwPjsKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9MYXllck1hbmFnZXIuaAppbmRleCAxYjA3Zjg2
ZjM5MzE3OGY0Y2Y3ZmU4M2E4MTQ3ODA4NGViZjIyODMxLi5hZDNjMWJiNzlhZWRjYWFlM2U3OTdm
ZDhmYjJkNmFhYTg2ZWQzM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9WaWRlb0xheWVyTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1ZpZGVvTGF5ZXJNYW5hZ2VyLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCiAgICAgdmlydHVhbCBQbGF0
Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRpdmVJbWFnZVB0cikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKiwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIFBsYXRmb3JtSW1hZ2VQdHIp
ID0gMDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aWRlb0Z1bGxzY3JlZW5GcmFtZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdl
KE5hdGl2ZUltYWdlUHRyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvRnVsbHNj
cmVlbklubGluZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHIpID0gMDsKICNlbmRpZgogCiAgICAgdmly
dHVhbCBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggOGE1ZjU4
NzBhMzUzNTczZDg2OTc2NjkzOTE1NGQ5N2I3MjJjZmMzMC4uZmIzYmZjZGMyYmUxZTc4MTY2NGEy
NDE5NDkzZTk1YmE1Mzc4N2VlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUFs
bG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAgICAgdW5zaWduZWQg
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlv
bnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7CiAgICAgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDI1YmYxNTlkZTQ0NTM0OTE2Zjkw
YWJkMDc1M2ExMTU1NmFjNTEyYjcuLjhjZGZjNzFiNjQ1MDNkZTMzMzE2MzU5Y2QzMzlkZDBkMzQ4
NGIxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bQpAQCAtNTY3LDcgKzU2Nyw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2RlckFWRk9iakM6OmZyYW1l
Qnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzCiAgICAgcmV0dXJu
IChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5hdGl2ZUltYWdlUHRy
IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKK1BsYXRmb3JtSW1h
Z2VQdHIgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAg
IExvY2tIb2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaAppbmRleCA2YTZmZDcxODNhZTg5ZDM4NTgyYjYxMWRkNzAxNmE1M2FlOWMxZWE2
Li4yNmIzZDc4ZmUxYjBjZTZkNDc2ZDJhNWU3Mzg3NWUzOTBlM2VkZTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCkBAIC0yNTIsNyArMjUyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0ZUxh
c3RQaXhlbEJ1ZmZlcigpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFibGVGcmFtZSgp
OwogICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0Jik7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpIGZpbmFsOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50
VGltZSgpIGZpbmFsOwogICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENo
YW5nZSgpOwogCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7
CkBAIC0zNDMsNyArMzQzLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVt
VmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVkZQdWxs
RGVsZWdhdGU+IG1fdmlkZW9PdXRwdXREZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1f
bGFzdEltYWdlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+IG1faW1hZ2VSb3RhdGlvblNlc3Np
b247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvVGV4dHVyZUNvcGllckNWPiBtX3ZpZGVvVGV4
dHVyZUNvcGllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4g
bV9waXhlbEJ1ZmZlckNvbmZvcm1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGYyOTQ4
ODE2ZWRkZTc5ZTc4YTE5MzFkNWJjNmQzZWNlZWI1ZDg0N2YuLjNhYmJhOTJlNTA5YTIxNDA0OWQ1
MDQxNmQ2NTI0MDFjNDYxODc5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTEyNyw3
ICsxMTI3LDcgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKIHsKICAgICB1
cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7Ci0gICAgbV92
aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UobV9sYXN0
SW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklu
bGluZUltYWdlKG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51
bGxwdHIpOwogfQogCiBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZWVuTGF5ZXIoKQpAQCAtMTEzOSw3
ICsxMTM5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRW
aWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKgogewogICAgIGlmICh2aWRlb0Z1bGxz
Y3JlZW5MYXllcikKICAgICAgICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5
bmNocm9ub3VzbHkpOwotICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bV9sYXN0SW1hZ2UpOworICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bV9sYXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiAg
ICAgdXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2soKTsKIH0KIApAQCAtMjI5Myw3ICsyMjkz
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0
SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydCA9IE1vbm90
b25pY1RpbWU6Om5vdygpOwogCi0gICAgbV9sYXN0SW1hZ2UgPSBtX3BpeGVsQnVmZmVyQ29uZm9y
bWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7
CisgICAgbV9sYXN0SW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fcGl4ZWxCdWZmZXJDb25m
b3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgp
KSk7CiAKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiY3JlYXRpbmcgYnVmZmVyIHRvb2sg
IiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnQpLnNlY29uZHMoKSk7CiB9CkBAIC0yMzE0
LDggKzIzMTQsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBh
aW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUik7CiAKLSAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRX
aWR0aChtX2xhc3RJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQobV9sYXN0SW1hZ2UuZ2V0
KCkpKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2xhc3RJbWFnZS5nZXQoKSwgaW1h
Z2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKKyAgICBGbG9hdFJlY3QgaW1h
Z2VSZWN0KHsgMCwgMCB9LCBtX2xhc3RJbWFnZS0+c2l6ZSgpKTsKKyAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZSgqbV9sYXN0SW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIG91dHB1dFJlY3QsIGlt
YWdlUmVjdCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGNyZWF0ZWQgYW4gQVZBc3NldEltYWdlR2Vu
ZXJhdG9yIGluIHRoZSBwYXN0IGR1ZSB0byBtX3ZpZGVvT3V0cHV0IG5vdCBoYXZpbmcgYW4gYXZh
aWxhYmxlCiAgICAgLy8gdmlkZW8gZnJhbWUsIGRlc3Ryb3kgaXQgbm93IHRoYXQgaXQgaXMgbm8g
bG9uZ2VyIG5lZWRlZC4KQEAgLTIzNDEsNyArMjM0MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3Jt
VGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4
dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwg
cHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1Jl
ZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7CiAgICAgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAg
cmV0dXJuIG1fbGFzdEltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBlN2JmN2E3
NjczMzBhNjcyN2YwNjMyMTYxNGRlMWIwYTM4MDdmOWFiLi5hMGFmOWI4NzRjYWU4MmFiZDNmODA5
MTBmNmJhMjlkOWUzOTRiNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjE1LDcg
KzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAg
ICAgYm9vbCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHByaXZh
dGU6CiAgICAgUmV0YWluUHRyPGlkPiBtX3BlcmZvcm1UYXNrT2JzZXJ2ZXI7CiAgICAgUmV0YWlu
UHRyPEFWU3RyZWFtU2Vzc2lvbj4gbV9zdHJlYW1TZXNzaW9uOwogICAgIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9sYXN0SW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2xhc3RJbWFnZTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4gbV9yZ2JDb25mb3JtZXI7
CiAgICAgUmVmUHRyPFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbj4gbV9kZWNvbXByZXNzaW9u
U2Vzc2lvbjsKICAgICBEZXF1ZTxSZXRhaW5QdHI8aWQ+PiBtX3NpemVDaGFuZ2VPYnNlcnZlcnM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggOTI1YmY0ZTFmOTBiNTRjNDI4NjZjMjY1
ODA1OWM2MTFhY2MxYmIwZS4uOGJjNDhmYTNlMzI0NTI1Njc1ZDllOGM4OGRmOWYzYWMxNzQ0MDg4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNTY0LDEwICs1NjQsMTAgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmRpZExvYWRpbmdQcm9ncmVz
cygpIGNvbnN0CiAgICAgcmV0dXJuIGxvYWRpbmdQcm9ncmVzc2VkOwogfQogCi1OYXRpdmVJbWFn
ZVB0ciBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHVwZGF0
ZUxhc3RJbWFnZSgpOwotICAgIHJldHVybiBtX2xhc3RJbWFnZS5nZXQoKTsKKyAgICByZXR1cm4g
bV9sYXN0SW1hZ2U7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQpAQCAtNjA3LDcgKzYwNyw3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UoKQogICAg
ICAgICBtX3JnYkNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4o
KF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKICAgICB9CiAKLSAgICBtX2xh
c3RJbWFnZSA9IG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xh
c3RQaXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgbV9sYXN0SW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3Jl
YXRlKG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhl
bEJ1ZmZlci5nZXQoKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02MjYsOCArNjI2LDgg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIEZsb2F0UmVjdCBp
bWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhl
aWdodChpbWFnZS5nZXQoKSkpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBp
bWFnZVJlY3Quc2l6ZSgpLCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOworICAgIEZsb2F0UmVjdCBp
bWFnZVJlY3QoeyAwLCAwIH0sIGltYWdlLT5zaXplKCkpOworICAgIGNvbnRleHQuZHJhd05hdGl2
ZUltYWdlKCppbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsK
IH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCogY29udGV4
dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKQEAgLTEy
MTksNyArMTIxOSw3IEBAIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZv
cm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwotICAgIG1fdmlkZW9M
YXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVy
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9sYXN0SW1hZ2UpOworICAgIG1fdmlkZW9M
YXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVy
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9sYXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QgZnJh
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDA4OGYxZDkyYzk3ZjM5MjViZjlhOWJj
MGIyMzc5ZDM1MGJkYmJjYTkuLjg3ODA5NmFkYmQ2ZTI1ZDQzMTg2YmVlYjBiYWRmNDY4Zjg2Y2U0
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgQ3VycmVudEZyYW1lUGFpbnRlcigpID0gZGVmYXVsdDsKICAgICAgICAgdm9p
ZCByZXNldCgpOwogCi0gICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlOworICAg
ICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNnSW1hZ2U7CiAgICAgICAgIFJlZlB0cjxNZWRpYVNh
bXBsZT4gbWVkaWFTYW1wbGU7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWPiBwaXhlbEJ1ZmZlckNvbmZvcm1lcjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tCmluZGV4IDk4OWZiODlkYTJhYjM4ZDFmMWMxN2Q1YWZkMWNhODIyNjAyMjdjYjQu
LjlhNTM2ZGI5MmIyZTA0MmQ4NzgxNGE5ZWVhYWE5M2VlYzgzODk4YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0KQEAgLTc2Miw3ICs3NjIsNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXll
cj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVWaWRlb0Z1bGxz
Ywogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1cGRhdGVDdXJyZW50
RnJhbWVJbWFnZSgpOwotICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bV9pbWFnZVBhaW50ZXIuY2dJbWFnZSk7CisgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtX2ltYWdlUGFpbnRlci5jZ0ltYWdlID8gbV9pbWFnZVBhaW50ZXIuY2dJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9hdFJlY3Qg
ZnJhbWUpCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZmZXJSZWY+KENN
U2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUtPnBs
YXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyKSk7Ci0gICAgbV9pbWFnZVBhaW50
ZXIuY2dJbWFnZSA9IG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyLT5jcmVhdGVJ
bWFnZUZyb21QaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcik7CisgICAgbV9pbWFnZVBhaW50ZXIuY2dJ
bWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUobV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25m
b3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyKSk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QpCkBAIC05NzUsMTQgKzk3NSwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAg
IGlmICghbV9pbWFnZVBhaW50ZXIuY2dJbWFnZSB8fCAhbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1w
bGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaW1hZ2UgPSBtX2ltYWdlUGFpbnRlci5j
Z0ltYWdlLmdldCgpOwotICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdldFdp
ZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkpOworICAgIGF1dG8mIGltYWdlID0g
bV9pbWFnZVBhaW50ZXIuY2dJbWFnZTsKKyAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KHsgMCwgMCB9
LCBpbWFnZS0+c2l6ZSgpKTsKICAgICBpZiAoIW1fdmlkZW9UcmFuc2Zvcm0pCiAgICAgICAgIG1f
dmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdlUGFpbnRl
ci5tZWRpYVNhbXBsZSk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtID0gKm1f
dmlkZW9UcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJlY3QgPSB2aWRl
b1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChk
ZXN0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCB0cmFuc2Zvcm1l
ZERlc3RSZWN0LCBpbWFnZVJlY3QpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFn
ZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmFjY2VsZXJhdGVk
UmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9M
YXllck1hbmFnZXJPYmpDLmgKaW5kZXggOTlkODViM2YyZGM4ZTc4YTU2ZDJiOTExN2RjZmIzY2Y4
MGJmNzU4NS4uYjY5YjEwNzA4OTY3Zjg3NWRiODBhZWM5ZDA5YzM2Y2RiM2FjMmRiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9MYXllck1hbmFnZXJPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLmgKQEAgLTYzLDEw
ICs2MywxMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXllciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIo
KSBjb25zdCBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlciwgTmF0aXZlSW1hZ2VQdHIpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyKSBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhbWUoKSBjb25zdCBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0
UmVjdCkgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3Jl
ZW5JbmxpbmVJbWFnZShOYXRpdmVJbWFnZVB0cikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyKSBm
aW5hbDsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCByZXF1aXJlc1RleHRUcmFj
a1JlcHJlc2VudGF0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb0xheWVyTWFuYWdlck9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb0xheWVyTWFuYWdlck9iakMubW0KaW5kZXggZjY3OTUzZDYzMTNiN2Q5YjYyYWM2ZDFh
NmU2NTZiODA4ODQ3NzA0ZC4uZjExOGRiNWMzYzVjYmViZWRlNDExZWE1NGQ1ZWFmNmVjYTJhZjdj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9MYXllck1hbmFnZXJPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5t
bQpAQCAtMTAzLDcgKzEwMyw3IEBAIFBsYXRmb3JtTGF5ZXIqIFZpZGVvTGF5ZXJNYW5hZ2VyT2Jq
Qzo6dmlkZW9GdWxsc2NyZWVuTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyLmdldCgpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBOYXRpdmVJbWFnZVB0ciBj
dXJyZW50SW1hZ2UpCit2b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIoUGxhdGZvcm1MYXllciAqdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBQbGF0Zm9ybUltYWdlUHRyIGN1cnJlbnRJ
bWFnZSkKIHsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5MYXllciA9PSB2aWRlb0Z1bGxzY3Jl
ZW5MYXllcikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTY3LDcgKzE2Nyw3
IEBAIHZvaWQgVmlkZW9MYXllck1hbmFnZXJPYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShG
bG9hdFJlY3QgdmlkZW9GdWxsc2NyZWVuRnJhCiAgICAgc3luY1RleHRUcmFja0JvdW5kcygpOwog
fQogCi12b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5s
aW5lSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UpCit2b2lkIFZpZGVvTGF5ZXJNYW5hZ2VyT2Jq
Qzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciBpbWFn
ZSkKIHsKICAgICBpZiAobV92aWRlb0lubGluZUxheWVyKQogICAgICAgICBbbV92aWRlb0lubGlu
ZUxheWVyIHNldENvbnRlbnRzOihfX2JyaWRnZSBpZClpbWFnZS5nZXQoKV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAppbmRleCBjMDA2OWJkY2ZiZDYxZmY3NjU4ZWFjZDEwNjA4MmFlMGM2ZmQyMGQyLi4zYzhmN2Mw
MmEzOTlkMWFmZDg3ZDZlZjc2Y2VlMWIwM2YxZWNhM2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI1
OTMsNyArMjU5Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c0ltYWdl
KCkKICAgICAgICAgLy8gRklYTUU6IG1heWJlIG9ubHkgZG8gdHJpbGluZWFyIGlmIHRoZSBpbWFn
ZSBpcyBiZWluZyBzY2FsZWQgZG93biwKICAgICAgICAgLy8gYnV0IHRoZW4gd2hhdCBpZiB0aGUg
bGF5ZXIgc2l6ZSBjaGFuZ2VzPwogICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldE1pbmlmaWNh
dGlvbkZpbHRlcihQbGF0Zm9ybUNBTGF5ZXI6OlRyaWxpbmVhcik7Ci0gICAgICAgIG1fY29udGVu
dHNMYXllci0+c2V0Q29udGVudHMobV9wZW5kaW5nQ29udGVudHNJbWFnZS5nZXQoKSk7CisgICAg
ICAgIG1fY29udGVudHNMYXllci0+c2V0Q29udGVudHMobV9wZW5kaW5nQ29udGVudHNJbWFnZS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKICAgICAgICAgbV9wZW5kaW5nQ29udGVudHNJbWFnZSA9
IG51bGxwdHI7CiAKICAgICAgICAgaWYgKG1fbGF5ZXJDbG9uZXMpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXgg
ODg1Zjc5OWY2ZjExZDRmOTU1MWY1NWFjNDZmY2UzY2U0ZThjZTk2MS4uYWVmM2MyNjhmNWQxMjRk
NDc5ZTZkZmZhZDhjMzQ3M2RjOTllNmEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTQ2LDYgKzQ2LDcgQEAg
Y2xhc3MgRGlzcGxheUxpc3Q7CiAKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBJbWFn
ZTsKK2NsYXNzIE5hdGl2ZUltYWdlOwogY2xhc3MgVHJhbnNmb3JtU3RhdGU7CiAKIGNsYXNzIEdy
YXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50IHsKQEAgLTYwMCw4ICs2MDEsOCBAQCBwcml2YXRlOgogCiAgICAgQ29sb3IgbV9j
b250ZW50c1NvbGlkQ29sb3I7CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV91bmNvcnJl
Y3RlZENvbnRlbnRzSW1hZ2U7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fcGVuZGluZ0Nv
bnRlbnRzSW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX3VuY29ycmVjdGVkQ29udGVu
dHNJbWFnZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fcGVuZGluZ0NvbnRlbnRzSW1hZ2U7
CiAgICAgCiAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fYW5pbWF0aW9uczsK
ICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gbV9iYXNlVmFsdWVUcmFuc2Zvcm1B
bmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKaW5kZXggOWE1N2ViZTJkNTVhMDc5YzM3ZjFj
YWI5NmE3ZmI3M2Y1YmY0MzliYS4uMzg3ZThjYjkyNWQwZWNhMjZkYTNjNDI3NTc4MTdiMDI5YjVl
MDZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCIKICNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNp
bmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNs
dWRlICJTaGFkb3dCbHVyLmgiCkBAIC0xNzQsMTYgKzE3NSwxNiBAQCBlbnVtIFBhdGhEcmF3aW5n
U3R5bGUgewogCiBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImIGxheWVySW1hZ2UsIGNvbnN0
IEZsb2F0UG9pbnQmIGxheWVyT3JpZ2luLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSwgY29u
c3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBs
YXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpIHsKLSAgICAg
ICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRS
ZWN0KHJvdW5kZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGxheWVyU2l6ZSksIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3Bl
cmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOworICAgIGlm
IChhdXRvIG5hdGl2ZUltYWdlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpKSB7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQs
ICpuYXRpdmVJbWFnZSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxh
eWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSksIHsgc2hhZG93U3Rh
dGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNo
YWRvd1N0YXRlKCkpOwogICAgIH0KIH0KIAogLy8gRklYTUU6IFRoaXMgaXMgbW9zdGx5IHNhbWUg
YXMgZHJhd1NoYWRvd0xheWVyQnVmZmVyLCBzbyB3ZSBzaG91bGQgbWVyZ2UgdHdvLgogc3RhdGlj
IHZvaWQgZHJhd1NoYWRvd0ltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIEltYWdlQnVmZmVyJiBsYXllckltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkK
IHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZlSW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpKSB7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNv
bnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IHNoYWRvd1N0YXRlLmds
b2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dT
dGF0ZSgpKTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkgeworICAgICAgICBkcmF3TmF0aXZlSW1hZ2Uo
cGxhdGZvcm1Db250ZXh0LCAqbmF0aXZlSW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCB7IHNoYWRv
d1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhh
LCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTE5MSw4ICsxOTIsOCBAQCBzdGF0aWMg
dm9pZCBmaWxsU2hhZG93QnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIEltYWdlQnVmZmVyJgogewogICAgIHNhdmUocGxhdGZvcm1Db250ZXh0KTsKIAotICAgIGlm
IChhdXRvIHN1cmZhY2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSkpCi0gICAgICAgIGNsaXBUb0ltYWdlQnVmZmVyKHBsYXRmb3JtQ29udGV4dCwgc3Vy
ZmFjZS5nZXQoKSwgRmxvYXRSZWN0KGxheWVyT3JpZ2luLCBleHBhbmRlZEludFNpemUobGF5ZXJT
aXplKSkpOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gbGF5ZXJJbWFnZS5jb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQorICAgICAgICBjbGlwVG9JbWFnZUJ1ZmZlcihw
bGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIEZsb2F0
UmVjdChsYXllck9yaWdpbiwgZXhwYW5kZWRJbnRTaXplKGxheWVyU2l6ZSkpKTsKIAogICAgIEZp
bGxTb3VyY2UgZmlsbFNvdXJjZTsKICAgICBmaWxsU291cmNlLmdsb2JhbEFscGhhID0gc2hhZG93
U3RhdGUuZ2xvYmFsQWxwaGE7CkBAIC04NjAsNyArODYxLDEzIEBAIHZvaWQgZHJhd0dseXBocyhQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBm
aWxsU291CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxw
aGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIE5hdGl2ZUltYWdlJiBuYXRp
dmVJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxw
aGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3sKKyAgICBpZiAoYXV0byBzdXJm
YWNlID0gbmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpKQorICAgICAgICBkcmF3UGxhdGZvcm1J
bWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOworfQorCit2b2lkIGRyYXdQbGF0Zm9y
bUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xv
YmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBwbGF0Zm9y
bUNvbnRleHQuc2F2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCmluZGV4IDUwNWMwYWY0N2Q3YTBhNTBl
OWMxOTA2NmRkOTNkZTU5NjFkNjY5MWEuLmM4ODgxMjE0OTVhMmUyZDkyZjBjMzRjZWNmNjY2MGE0
NmY5YWY2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCkBAIC0xNDMsNyArMTQzLDggQEAgdm9pZCBjbGVh
clJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogdm9pZCBk
cmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0
IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNh
aXJvX3NjYWxlZF9mb250X3QqLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYs
IGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywgZmxvYXQsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IENvbG9yJiwgRm9udFNtb290aGluZ01vZGUpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQ
bGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNv
bnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsK
K3ZvaWQgZHJhd1BsYXRmb3JtSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJm
YWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3UGF0
dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
YWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRl
cnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJiwgT3JpZW50YXRpb25T
aXppbmcgb3BlcmF0aW9uU2l6aW5nID0gT3JpZW50YXRpb25TaXppbmc6Ok5vcm1hbCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA5ZDQwOGY2ZTVlNzhmMGM3MDc2ODIwZDA2
YTU1YmE1YzU1ODI0OGMzLi5iZGIwNTk2ZDdkY2Y3NWRkMDU5YjY5ODk2YTJmMTdiNTlhNzA4ZDg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMjMsMTQgKzEyMywxOSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9h
dCBib3JkZXJUaGlja25lc3MpCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpwbGF0Zm9ybUNvbnRleHQo
KSwgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0
eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybURyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGxhdGZvcm1JbWFnZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8m
IHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0
Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMs
IHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpT
aGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZSgqcGxhdGZv
cm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBz
dGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpKTsKIH0KIAogLy8gVGhpcyBpcyBvbmx5IHVzZWQgdG8gZHJhdyBib3Jk
ZXJzLCBzbyB3ZSBzaG91bGQgbm90IGRyYXcgc2hhZG93cy4KQEAgLTI2Niw4ICsyNzEsOCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgRmxvYXRSZWN0JiBkZQogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNv
bnRleHQoKSk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIo
KnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCk7CisgICAgaWYgKGF1
dG8gbmF0aXZlSW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKSkKKyAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRleHQo
KSwgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCiBJ
bnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcygpIGNvbnN0CkBAIC02ODEsOCArNjg2
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxh
dGZvcm1Db250ZXh0KCkpOwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oKnBsYXRmb3Jt
Q29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0
LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOworICAgIGlmIChh
dXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKKyAg
ICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgbmF0aXZlSW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0R0xDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJvLmNwcAppbmRleCBmYWRiMjQzZTY3OGI3MjdmMTBi
MGI2YjNiMmU5MGYwNThiZDM5MjVlLi5jNmFhNzcxOGU5YjQzNDE1YjI1MDY0OTNlYTVhY2M2ODA1
N2Y4MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRHTENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRHTENhaXJvLmNwcApAQCAtNTYsOSArNTYs
OSBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQogICAgICAgICBzb3VyY2UtPnNldERhdGEobV9p
bWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFzb3VyY2UtPmZyYW1lQ291bnQoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBzb3Vy
Y2UtPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9
IHNvdXJjZS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoMCktPnBsYXRmb3JtSW1hZ2UoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gbV9pbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+cGxhdGZvcm1JbWFnZSgpOwogICAgICAgICAvLyAx
LiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1dCwgYXNzdW1lIG5vIFBy
ZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFscGhhIHZhbHVlIGlzIDB4
RkYgZm9yIGVhY2ggcGl4ZWwsCiAgICAgICAgIC8vIHdoaWNoIGlzIHRydWUgYXQgcHJlc2VudCBh
bmQgbWF5IGJlIGNoYW5nZWQgaW4gdGhlIGZ1dHVyZSBhbmQgbmVlZHMgYWRqdXN0bWVudCBhY2Nv
cmRpbmdseS4KICAgICAgICAgLy8gMi4gRm9yIHRleEltYWdlMkQgd2l0aCBIVE1MQ2FudmFzRWxl
bWVudCBpbnB1dCBpbiB3aGljaCBBbHBoYSBpcyBhbHJlYWR5IFByZW11bHRpcGxpZWQgaW4gdGhp
cyBwb3J0LCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDhlZjRm
Nzg2YjcyNDkxNDI0NTZlZmYxZjBhZDgyMTZjYzkwNTUzNjcuLjQ3ZTEwNzVmYzE3YWVmYWU1YzFh
Njc4NWNjNTM0OGU1OWVmOTYzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcApAQCAtMjg1LDE3ICsyODUsMjMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGMKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK2Jvb2wgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGxh
dGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQo
KS5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQs
IGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGlt
YWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihtX3BsYXRmb3Jt
Q29udGV4dCwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKKyAgICAgICAgQ2Fp
cm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLT5wbGF0Zm9ybUltYWdl
KCkuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRo
aWNrbmVzcykKQEAgLTQyMSw3ICs0MjcsNyBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6Y2xpcEJvdW5kcygpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKIHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3Bs
YXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgICAgICBDYWlybzo6
Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmgKaW5kZXggMWM4MjcxMzBjMmE1ZmUyOGY3NTM1ZTE5NDVhMzNkYzk2ODYyMDUxNC4u
YjlmYTI0Zjk1N2RlZDg3Nzg1NmY5OGY5NmVjOGI4NzJhMDAyOGI2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTc2LDcgKzc2LDggQEAgcHVibGljOgogICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRp
bGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIAogICAg
IGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZl
SW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGFjNGIxZjc5
MDc2ODRjYTZkYjg2MjcyMTM5OTdkNGI1NmE4MjBlOGYuLjY2ZTBiOGY0ZWI1NzIwZWJiNjM3MGEw
YzU0OWIzZDJiNmEyNDhhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAK
QEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBjb25zdCBhdXRv
JiBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSA9IGRlc3RDb250ZXh0LnN0YXRlKCk7CiAKICAgICBp
ZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQo
KSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGRy
YXdOYXRpdmVJbWFnZSgqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgp
LCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmFscGhh
LCBXZWJDb3JlOjpDYWlybzo6U2hhZG93U3RhdGUoZGVzdGluYXRpb25Db250ZXh0U3RhdGUpKTsK
KyAgICAgICAgZHJhd05hdGl2ZUltYWdlKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwg
KmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBkZXN0aW5hdGlvbkNvbnRleHRT
dGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRl
LmFscGhhLCBXZWJDb3JlOjpDYWlybzo6U2hhZG93U3RhdGUoZGVzdGluYXRpb25Db250ZXh0U3Rh
dGUpKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtODAsNyArODAsNyBAQCB2
b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbAogICAgIH0KIAogICAgIGlmIChhdXRvIGltYWdlID0gY29w
eU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9y
ZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpk
ZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIG1fbG9naWNhbFNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7Cisg
ICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCks
IGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIG1fbG9naWNhbFNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcmND
b2xvclNwYWNlLCBDb2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNGYxZjc1NzI2YWE4M2Q4NGFkYmIz
NzJhZWY3NmRmYzRjOGVmN2I4NS4uM2Y3NWNlMTk4MWJhY2VmMzdjOTQxMjIxZWQ0YzZkMDU0Zjlk
MmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIHVuc2lnbmVkIEltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2Vu
ZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZm
ZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBj
b3B5QmVoYXZpb3IpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ2Fpcm9T
dXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yKSBjb25zdAogewogICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgY2FzZSBDb3B5
QmFja2luZ1N0b3JlOiB7CkBAIC03NywxOCArNzcsMTggQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eQogICAgICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IuZ2V0KCksIG1fc3VyZmFjZS5n
ZXQoKSwgMCwgMCk7CiAgICAgICAgIGNhaXJvX3BhaW50KGNyLmdldCgpKTsKIAotICAgICAgICBy
ZXR1cm4gY29weTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShj
b3B5KSk7CiAgICAgfQogCiAgICAgY2FzZSBEb250Q29weUJhY2tpbmdTdG9yZToKLSAgICAgICAg
cmV0dXJuIG1fc3VyZmFjZTsKKyAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9z
dXJmYWNlKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNr
ZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFn
ZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0lt
YWdlKCkgY29uc3QKIHsKICAgICBCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcjsKICAgICBp
ZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3N1cmZhY2UuZ2V0KCkpID09IENBSVJPX1NVUkZB
Q0VfVFlQRV9JTUFHRSAmJiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1fc3VyZmFjZS5nZXQo
KSkgPT0gQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQSkKQEAgLTEwMCw3ICsxMDAsOCBAQCBOYXRp
dmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNhaXJvU3VyZmFjZUNv
ZXJjZVRvSW1hZ2UoKSBjb25zdAogCiBWZWN0b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kOjp0b0JHUkFEYXRhKCkgY29uc3QKIHsKLSAgICBhdXRvIHN1cmZhY2UgPSBj
YWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCk7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNhaXJv
U3VyZmFjZUNvZXJjZVRvSW1hZ2UoKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBuYXRpdmVJbWFnZSA/
IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyOwogICAgIGNhaXJvX3N1cmZh
Y2VfZmx1c2goc3VyZmFjZS5nZXQoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRh
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAppbmRleCBhNjlk
NWVlMGZmNjNmNzc5NTgyNWRjNjc2NmQ2ZDE2YjcyNjFkNjVlLi4yYmI0MDIyNjUwY2Y5YzAxYjQ2
YTIyZjgxMzZmZjBjYmY1ZWIyNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlckNhaXJvU3Vy
ZmFjZUJhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQgewogcHVibGljOgog
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgTmF0
aXZlSW1hZ2VQdHIgY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0IG92ZXJy
aWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEo
KSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBv
dmVycmlkZTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEltYWdl
QnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWNlLCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYmKTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNh
aXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGNhaXJvU3VyZmFjZUNvZXJjZVRvSW1hZ2UoKSBjb25zdDsKICAgICB1bnNpZ25lZCBieXRlc1Bl
clJvdygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBtX3N1cmZhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCmluZGV4IDA1YzBmODFjYjM0MTkw
Y2IzNzNiZDg0MzQxNThiNGQwMzMwMWFiMDQuLjExNWUwYmQwYzk2OGQxMTE2ZDk5OTE1NjdjZGNi
YzQ5MjkxZTM5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC0zNSwzNCArMzUsMjkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnRTaXplIG5hdGl2ZUltYWdlU2l6ZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJbnRTaXplIE5hdGl2ZUltYWdlOjpzaXplKGNvbnN0IFBs
YXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0gICAgcmV0dXJuIGltYWdlID8gY2Fp
cm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7CisgICAgcmV0dXJuIHBsYXRm
b3JtSW1hZ2UgPyBjYWlyb1N1cmZhY2VTaXplKHBsYXRmb3JtSW1hZ2UuZ2V0KCkpIDogSW50U2l6
ZSgpOwogfQogCi1ib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlKQorYm9vbCBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAgIHJldHVy
biAhaW1hZ2UgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChpbWFnZS5nZXQoKSkgIT0gQ0FJ
Uk9fQ09OVEVOVF9DT0xPUjsKKyAgICByZXR1cm4gIW1fcGxhdGZvcm1JbWFnZSB8fCBjYWlyb19z
dXJmYWNlX2dldF9jb250ZW50KG1fcGxhdGZvcm1JbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVO
VF9DT0xPUjsKIH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVs
U29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUo
aW1hZ2UpICE9IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UgfHwgc2l6
ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCi0gICAgaWYg
KGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQ
RV9JTUFHRSkKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX3BsYXRmb3JtSW1hZ2Uu
Z2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKICAgICAgICAgcmV0dXJuIENvbG9y
KCk7CiAKLSAgICB1bnNpZ25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25l
ZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsKKyAgICB1bnNp
Z25lZCogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2RhdGEobV9wbGF0Zm9ybUltYWdlLmdldCgpKSk7CiAgICAgcmV0dXJuIHVu
cHJlbXVsdGlwbGllZChhc1NSR0JBKFBhY2tlZENvbG9yOjpBUkdCIHsgKnBpeGVsIH0pKTsKIH0K
IAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShp
bWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci19Ci0KLXZvaWQg
Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpCit2b2lkIE5h
dGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCmluZGV4IGNl
NTI3ODA2MGEwZGY1YzEwZmQxMjhmOTZkZjg5M2FmODZhMDJjZjEuLjc0MWM5NmYyNDdiYjJmMmNi
OTY2YWVlYmQ4ZTY4ZGMzZTg2YTNkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApAQCAtMzUsMTAgKzM1LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJuOjpjcmVh
dGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3QKIHsKLSAgICBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIXN1cmZhY2UpCisgICAgYXV0byBuYXRpdmVJbWFn
ZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFu
YXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCisgICAgYXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7
CisKICAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9m
b3Jfc3VyZmFjZShzdXJmYWNlLmdldCgpKTsKIAogICAgIC8vIGNhaXJvIG1lcmdlcyBwYXR0ZXIg
c3BhY2UgYW5kIHVzZXIgc3BhY2UgaXRzZWxmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggY2Y4ZWMy
OWI1Y2U2NGE1MjAxN2I3NWQwOTBiNWY5MjZmZDU2MDEyYS4uMGExOTkwYWVhYzI5M2VkMTA5ODAy
ODk4NTJlMjRhZThlNmZjNmVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMjgwLDExICsyODAs
MTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBt
X2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRHJhd05hdGl2ZUltYWdlKGNvbnN0
IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gTW9u
b3RvbmljVGltZTo6bm93KCk7CiAjZW5kaWYKQEAgLTQ0NywyMyArNDUyLDIzIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0CiAKICAgICBhdXRvIHRpbGVJbWFnZSA9IGltYWdlLnByZVRyYW5zZm9y
bWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUob3B0aW9ucy5vcmllbnRhdGlvbigpID09IElt
YWdlT3JpZW50YXRpb246OkZyb21JbWFnZSk7CiAKLSAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhl
aWdodCh0aWxlSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRp
bGVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBzdWJJbWFnZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwog
ICAgIGlmICh0aWxlUmVjdC5zaXplKCkgPT0gaW1hZ2VTaXplKQotICAgICAgICBzdWJJbWFnZSA9
IHRpbGVJbWFnZTsKKyAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQ29weWluZyBhIHN1Yi1pbWFnZSBvdXQgb2YgYSBw
YXJ0aWFsbHktZGVjb2RlZCBpbWFnZSBzdG9wcyB0aGUgZGVjb2Rpbmcgb2YgdGhlIG9yaWdpbmFs
IGltYWdlLiBJdCBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICAgICAgIC8vIGJlY2F1c2Ugc3ViLWlt
YWdlcyBhcmUgb25seSB1c2VkIGZvciBib3JkZXItaW1hZ2UsIHdoaWNoIG9ubHkgcmVuZGVycyB3
aGVuIHRoZSBpbWFnZSBpcyBmdWxseSBkZWNvZGVkLgogICAgICAgICBBU1NFUlQoaCA9PSBpbWFn
ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0
aEltYWdlSW5SZWN0KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKKyAgICAgICAgc3ViSW1h
Z2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJlY3QodGlsZUltYWdlLT5wbGF0
Zm9ybUltYWdlKCkuZ2V0KCksIHRpbGVSZWN0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgbmVl
ZCB0byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVjYXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5
IGxvYWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5nLAogICAgIC8vIGZhbGwgYmFjayB0byB0
aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2VkIG1lY2hhbmlzbS4KICAgICBmbG9hdCBz
Y2FsZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgpICogbmFycm93UHJlY2lzaW9uVG9GbG9h
dChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0
aWxlSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IHcgPSBDR0ltYWdlR2V0V2lkdGgodGlsZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0
aCgpICYmIGggPT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYg
IXNwYWNpbmcuaGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAg
dGhlIGltYWdlcyB0byBpbnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9y
ZGVyLWltYWdlLXJlcGVhdDogcm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwg
YnV0IHRoZSBsYXN0LCBhbmQgc3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KQEAgLTUxMiw3
ICs1MTcsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZQogICAgIH0KIAogICAgIEZsb2F0U2l6
ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpOwotICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpOworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBidWZmZXIuY29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2UgPSBuYXRpdmVJbWFnZSA/IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxs
cHRyOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAg
ICAvLyBGSVhNRTogVGhpcyBpbWFnZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBh
cyBhbiBhbHBoYSBtYXNrIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCmluZGV4IGJiOTFkZWM5
MTIyNGQ0MTk3ZWNhODFiYmRiYzRlMDU2N2U0M2MwNGQuLjA0MDM5NDY5MTM1YzM1NTU1MjQyZWM1
YjlmN2EyZjg2MzA5YzIwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCkBAIC0zMzgsOCArMzM4
LDkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2Uo
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGkKICAgICBpZiAoIW1fY2dJbWFnZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9pbWFnZVdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKG1f
Y2dJbWFnZS5nZXQoKSk7Ci0gICAgbV9pbWFnZUhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9j
Z0ltYWdlLmdldCgpKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBtX2NnSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKTsKKyAgICBtX2ltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UuZ2V0KCkpOworICAgIG1faW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
LmdldCgpKTsKICAgICBpZiAoIW1faW1hZ2VXaWR0aCB8fCAhbV9pbWFnZUhlaWdodCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNDcsNyArMzQ4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sIGkKICAgICAvLyBzbywgcmUtcmVuZGVyIGl0IGludG8gYW4gUkdCIGNvbG9yIHNwYWNlLiBU
aGUgaW1hZ2UgcmUtcGFja2luZwogICAgIC8vIGNvZGUgcmVxdWlyZXMgY29sb3IgZGF0YSwgbm90
IGNvbG9yIHRhYmxlIGluZGljZXMsIGZvciB0aGUKICAgICAvLyBpbWFnZSBkYXRhLgotICAgIENH
Q29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dJbWFnZUdldENvbG9yU3BhY2UobV9jZ0ltYWdl
LmdldCgpKTsKKyAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHSW1hZ2VHZXRDb2xv
clNwYWNlKGltYWdlLmdldCgpKTsKICAgICBDR0NvbG9yU3BhY2VNb2RlbCBtb2RlbCA9IENHQ29s
b3JTcGFjZUdldE1vZGVsKGNvbG9yU3BhY2UpOwogICAgIGlmIChtb2RlbCA9PSBrQ0dDb2xvclNw
YWNlTW9kZWxJbmRleGVkKSB7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1h
cENvbnRleHQ7CkBAIC0zNjIsMjIgKzM2MywyNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMSW1h
Z2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgaQog
CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dC
bGVuZE1vZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHko
Yml0bWFwQ29udGV4dC5nZXQoKSwga0NHSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgICAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2lt
YWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBtX2NnSW1hZ2UuZ2V0KCkpOworICAgICAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBtX2lt
YWdlV2lkdGgsIG1faW1hZ2VIZWlnaHQpLCBpbWFnZS5nZXQoKSk7CiAKICAgICAgICAgLy8gTm93
IGRpc2NhcmQgdGhlIG9yaWdpbmFsIENHIGltYWdlIGFuZCByZXBsYWNlIGl0IHdpdGggYSBjb3B5
IGZyb20gdGhlIGJpdG1hcCBjb250ZXh0LgotICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSkpOwotICAg
ICAgICBtX2NnSW1hZ2UgPSBtX2RlY29kZWRJbWFnZS5nZXQoKTsKKyAgICAgICAgbV9kZWNvZGVk
SW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJp
dG1hcENvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2U7
CiAgICAgfQogCi0gICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1Bl
ckNvbXBvbmVudChtX2NnSW1hZ2UuZ2V0KCkpOwotICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSBD
R0ltYWdlR2V0Qml0c1BlclBpeGVsKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgaWYgKCFtX2NnSW1h
Z2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGltYWdlID0gbV9jZ0ltYWdlLT5wbGF0
Zm9ybUltYWdlKCk7CisgICAgc2l6ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0
c1BlckNvbXBvbmVudChpbWFnZS5nZXQoKSk7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENH
SW1hZ2VHZXRCaXRzUGVyUGl4ZWwoaW1hZ2UuZ2V0KCkpOwogICAgIGlmIChiaXRzUGVyQ29tcG9u
ZW50ICE9IDggJiYgYml0c1BlckNvbXBvbmVudCAhPSAxNikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmIChiaXRzUGVyUGl4ZWwgJSBiaXRzUGVyQ29tcG9uZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgc2l6ZV90IGNvbXBvbmVudHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbCAv
IGJpdHNQZXJDb21wb25lbnQ7CiAKLSAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VH
ZXRCaXRtYXBJbmZvKG1fY2dJbWFnZS5nZXQoKSk7CisgICAgQ0dCaXRtYXBJbmZvIGJpdEluZm8g
PSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZS5nZXQoKSk7CiAgICAgYm9vbCBiaWdFbmRpYW5T
b3VyY2UgPSBmYWxzZTsKICAgICAvLyBUaGVzZSBjb3VsZCB0ZWNobmljYWxseSBiZSBjb21iaW5l
ZCBpbnRvIG9uZSBsYXJnZSBzd2l0Y2gKICAgICAvLyBzdGF0ZW1lbnQsIGJ1dCB3ZSBwcmVmZXIg
bm90IHRvIHNvIHRoYXQgd2UgZmFpbCBmYXN0IGlmIHdlCkBAIC00MTksNyArNDI0LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTEltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGkKIAogICAgIG1fYWxwaGFPcCA9IEFscGhhT3A6OkRvTm90aGlu
ZzsKICAgICBBbHBoYUZvcm1hdCBhbHBoYUZvcm1hdCA9IEFscGhhRm9ybWF0Tm9uZTsKLSAgICBz
d2l0Y2ggKENHSW1hZ2VHZXRBbHBoYUluZm8obV9jZ0ltYWdlLmdldCgpKSkgeworICAgIHN3aXRj
aCAoQ0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSkpIHsKICAgICBjYXNlIGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Q6CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkK
ICAgICAgICAgICAgIG1fYWxwaGFPcCA9IEFscGhhT3A6OkRvVW5tdWx0aXBseTsKQEAgLTQ2Mywx
NCArNDY4LDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFj
dEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBpCiAgICAgaWYgKG1faW1hZ2VTb3Vy
Y2VGb3JtYXQgPT0gRGF0YUZvcm1hdDo6TnVtRm9ybWF0cykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgbV9waXhlbERhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJ
bWFnZUdldERhdGFQcm92aWRlcihtX2NnSW1hZ2UuZ2V0KCkpKSk7CisgICAgbV9waXhlbERhdGEg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihp
bWFnZS5nZXQoKSkpKTsKICAgICBpZiAoIW1fcGl4ZWxEYXRhKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBtX2ltYWdlUGl4ZWxEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX3BpeGVsRGF0YS5nZXQoKSkpOwogCiAgICAgdW5zaWduZWQg
c3JjVW5wYWNrQWxpZ25tZW50ID0gMDsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdl
R2V0Qnl0ZXNQZXJSb3cobV9jZ0ltYWdlLmdldCgpKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cg
PSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UuZ2V0KCkpOwogICAgIHVuc2lnbmVkIHBhZGRp
bmcgPSBieXRlc1BlclJvdyAtIGJpdHNQZXJQaXhlbCAvIDggKiBtX2ltYWdlV2lkdGg7CiAgICAg
aWYgKHBhZGRpbmcpIHsKICAgICAgICAgc3JjVW5wYWNrQWxpZ25tZW50ID0gcGFkZGluZyArIDE7
CkBAIC01NDMsNyArNTQ4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRU
b0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY28KICAgICBjb250ZXh0
LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbWFn
ZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RG9Ob3RJbnRlcnBvbGF0ZSk7Ci0gICAgY29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwor
ICAgIGNvbnRleHQuZHJhd1BsYXRmb3JtSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNS
ZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZU9wZXJh
dG9yOjpDb3B5IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5jcHAKaW5kZXggNWIyMGQ4OTJlZDhiYmNmNjAxODE2YTYzNjc2YTAwZjFmYTVjMTdiMy4u
NTRiODc4YjQzNDc2ZTE5YmQ2ZjYxNzFmOGI0OTYyNzc2M2UwZmIxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
YWNrZW5kLmNwcApAQCAtNjcsMjQgKzY3LDI0IEBAIHZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6
OnNldHVwQ29udGV4dCgpCiAgICAgY29udGV4dCgpLmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9y
ZXNvbHV0aW9uU2NhbGUpOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0
ZUNyb3BwZWRJbWFnZUlmTmVjZXNzYXJ5KENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUm
IGJhY2tlbmRTaXplKQorc3RhdGljIFJlZlB0cjxOYXRpdmVJbWFnZT4gY3JlYXRlQ3JvcHBlZElt
YWdlSWZOZWNlc3NhcnkoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdlLCBjb25zdCBJbnRTaXpl
JiBiYWNrZW5kU2l6ZSkKIHsKLSAgICBpZiAoaW1hZ2UgJiYgKENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihiYWNrZW5kU2l6ZS53aWR0aCgpKSB8fCBDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlKSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJhY2tlbmRTaXplLmhlaWdo
dCgpKSkpCi0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJl
Y3QoaW1hZ2UsIENHUmVjdE1ha2UoMCwgMCwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNp
emUuaGVpZ2h0KCkpKSk7Ci0gICAgcmV0dXJuIGltYWdlOworICAgIGlmIChpbWFnZSAmJiBpbWFn
ZS0+c2l6ZSgpICE9IGJhY2tlbmRTaXplKQorICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShDR0ltYWdlQ3JlYXRlV2l0aEltYWdlSW5SZWN0KGltYWdlLT5wbGF0Zm9ybUltYWdlKCku
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUu
aGVpZ2h0KCkpKSk7CisgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2UpOwogfQogCi1zdGF0aWMgUmVm
UHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKFJldGFpblB0
cjxDR0ltYWdlUmVmPiYmIGltYWdlLCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNv
bHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKK3N0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJp
dG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmVmUHRyPE5hdGl2ZUltYWdlPiYmIGltYWdl
LCBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1
dGlvbikKIHsKICAgICBpZiAocmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0
aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQotICAgICAgICBpbWFnZSA9IGNyZWF0ZUNy
b3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLmdldCgpLCBiYWNrZW5kU2l6ZSk7CisgICAgICAg
IGltYWdlID0gY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoV1RGTW92ZShpbWFnZSksIGJh
Y2tlbmRTaXplKTsKICAgICBlbHNlIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUud2lkdGgoKSwgbG9naWNhbFNpemUu
aGVpZ2h0KCksIDgsIDQgKiBsb2dpY2FsU2l6ZS53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigp
LCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0
QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0Nv
bnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJv
KCksIGxvZ2ljYWxTaXplKSk7CiAgICAgICAgIEZsb2F0U2l6ZSBpbWFnZVNpemVJblVzZXJTcGFj
ZSA9IGxvZ2ljYWxTaXplOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5nZXQo
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgaW1hZ2VTaXplSW5Vc2VyU3BhY2UpLCBp
bWFnZS5nZXQoKSk7Ci0gICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGVJbWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250
ZXh0LmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBpbWFnZVNpemVJblVzZXJT
cGFjZSksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAgICAgICBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQo
KSkpOwogICAgIH0KIAogICAgIGlmICghaW1hZ2UpCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBS
ZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoUmV0YWlu
UHRyPENHSW1hZ2VSZWY+CiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNv
cHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9u
IHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsK
KyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlOwogICAgIGlmIChtX3Jlc29sdXRpb25TY2Fs
ZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykK
ICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9yKTsKICAgICBlbHNl
CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBzcmNSZWN0
U2NhbGVkLnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKIAogICAgIGlmIChhdXRvIGltYWdlID0g
Y29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdT
dG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgZGVzdENvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgc3JjUmVjdFNj
YWxlZCwgb3B0aW9ucyk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1h
Z2UsIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBvcHRpb25zKTsKIH0K
IAogdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtMTM4LDcgKzEzOCw3IEBAIFJldGFpblB0cjxD
RkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpCiAgICAgYXV0byB1dGkgPSB1dGlGcm9tSW1hZ2VCdWZmZXJNSU1FVHlwZSht
aW1lVHlwZSk7CiAgICAgQVNTRVJUKHV0aSk7CiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2U7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZTsKICAgICBSZWZQdHI8VWludDhD
bGFtcGVkQXJyYXk+IHByb3RlY3RlZFBpeGVsQXJyYXk7CiAKICAgICBpZiAoQ0ZFcXVhbCh1dGku
Z2V0KCksIGpwZWdVVEkoKSkpIHsKQEAgLTE1Niw3ICsxNTYsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aQogICAgICAgICBpZiAoIWRhdGFQcm92aWRlcikKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKHBpeGVsQXJy
YXlEaW1lbnNpb25zLndpZHRoKCksIHBpeGVsQXJyYXlEaW1lbnNpb25zLmhlaWdodCgpLCA4LCAz
MiwgNCAqIHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCks
IGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
CisgICAgICAgIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0ltYWdlQ3JlYXRlKHBpeGVs
QXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHBpeGVsQXJyYXlEaW1lbnNpb25zLmhlaWdodCgpLCA4
LCAzMiwgNCAqIHBpeGVsQXJyYXlEaW1lbnNpb25zLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVm
KCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0
LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0
KSk7CiAgICAgfSBlbHNlIGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVz
b2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewogICAgICAgICBpbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgaW1hZ2UgPSBjcmVhdGVD
cm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShpbWFnZS5nZXQoKSwgYmFja2VuZFNpemUoKSk7CkBAIC0x
NjUsMTIgKzE2NSwxMiBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2Vu
ZDo6dG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aQogICAgICAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBiYWNrZW5kU2l6ZSgpLndp
ZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBiYWNrZW5kU2l6ZSgpLndpZHRo
KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkp
OwogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwga0NHQmxlbmRN
b2RlQ29weSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dS
ZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0
KCkpKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1h
a2UoMCwgMCwgYmFja2VuZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpKSwg
aW1hZ2UuZ2V0KCkpOwotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29u
dGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tl
bmRTaXplKCkuaGVpZ2h0KCkpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICAg
ICAgaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQuZ2V0KCkpKTsKICAgICB9CiAKICAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZE
YXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7Ci0gICAgaWYgKCFlbmNv
ZGVJbWFnZShpbWFnZS5nZXQoKSwgdXRpLmdldCgpLCBxdWFsaXR5LCBjZkRhdGEuZ2V0KCkpKQor
ICAgIGlmICghZW5jb2RlSW1hZ2UoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgdXRpLmdl
dCgpLCBxdWFsaXR5LCBjZkRhdGEuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIHJldHVybiBXVEZNb3ZlKGNmRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZC5jcHAKaW5kZXggZmZlZjY2MzMwZDFmYmUyNmM0YzhmMDIzZmY5NGU3ODg1MmM2YzkyMC4uMzU2
ZWI1MjYzMzc0MDcwODgzYTI5M2Q2NTBjNjg1NGI0N2VmZDkyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmNwcApAQCAtMTA3LDE0ICsxMDcsMTQgQEAgR3JhcGhpY3NDb250ZXh0
JiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJu
ICptX2NvbnRleHQ7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0
CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgc3dp
dGNoIChjb3B5QmVoYXZpb3IpIHsKICAgICBjYXNlIENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAg
IHJldHVybiBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKSkpOworICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShDR0Jp
dG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsKIAog
ICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENH
SW1hZ2VDcmVhdGUoCisgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKENHSW1hZ2VD
cmVhdGUoCiAgICAgICAgICAgICBtX2JhY2tlbmRTaXplLndpZHRoKCksIG1fYmFja2VuZFNpemUu
aGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAogICAgICAgICAgICAgY2FjaGVkQ0dDb2xv
clNwYWNlKG1fY29sb3JTcGFjZSksIERlZmF1bHRCaXRtYXBJbmZvLCBtX2RhdGFQcm92aWRlci5n
ZXQoKSwKICAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCmluZGV4IGI5YmQ3ZjFiYWI0N2ZmN2M3OTc0
MzQ4MzNjMjdhNTQ5NzMxMDgyODUuLjdkMjMzZDIyMjc4NWFkM2RkZjA2M2M0YTg2NDhmZGZmYWNl
N2NmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaApAQCAtNDIsNyArNDIsNyBA
QCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvQkdSQURhdGEoKSBjb25z
dCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXgg
ZGJjM2I3ZWI4YjNkMWFkODhkMGFiM2YwZWVmOTBhN2M4ZDg1ZTAzMC4uYTlkNTQ4NWEyNjFiNWEw
ZGY1M2QyYjg5NzEwYWU4MzdmYmY5YjFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuY3BwCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCBDb2xvckZvcm1hdCBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmJhY2tlbmRDb2xvckZvcm1hdCgpIGNvbnN0CiAgICAgcmV0dXJuIENv
bG9yRm9ybWF0OjpCR1JBOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAorUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdAogewotICAgIHJldHVybiBtX3N1cmZhY2UtPmNyZWF0
ZUltYWdlKCk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9zdXJmYWNlLT5jcmVh
dGVJbWFnZSgpKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsKLSAgICByZXR1cm4g
SU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKFdURk1vdmUobV9zdXJmYWNlKSk7CisgICAgcmV0dXJu
IE5hdGl2ZUltYWdlOjpjcmVhdGUoSU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKFdURk1vdmUobV9z
dXJmYWNlKSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6ZHJhd0Nv
bnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKIAogICAgIGlm
IChhdXRvIGltYWdlID0gc2lua0ludG9OYXRpdmVJbWFnZSgpKQotICAgICAgICBkZXN0Q29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fYmFja2VuZFNpemUsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UoKmltYWdlLCBtX2JhY2tlbmRTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBv
cHRpb25zKTsKIH0KIAogUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjp0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+
IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDMyMzA5NGVhNzk1YzVkMjQ4M2M4
ODQ0MDMxMjRhOTA0MGNjNzQwZmIuLmY1MDllZWU2NWE3MjJlMTIwMWZmYzBmYjU3N2NmYjgyYmZl
YzY5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC01MSw4ICs1MSw4
IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHNpemVfdCBleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIE5hdGl2
ZUltYWdlUHRyIGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdT
dG9yZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgc2lua0ludG9OYXRpdmVJ
bWFnZSgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCA4OTBhMDcxODEwOTIzZjc1YmEw
ZTIyOTNjNDZiZWE4NzQ0NWFiYTBjLi5jZGFmMTVjMTA5ZGM3OTcyOTdlOWIxMDI5NDM3MGExZTI3
NTA2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgdW5zaWduZWQgSW1hZ2VE
ZWNvZGVyQ0c6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW0KICAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsK
IH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykKK1BsYXRmb3JtSW1hZ2VQdHIgSW1h
Z2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29k
aW5nT3B0aW9ucykKIHsKICAgICBMT0coSW1hZ2VzLCAiSW1hZ2VEZWNvZGVyICVwIGNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4ICVsdSIsIHRoaXMsIGluZGV4KTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBvcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggNDY3OTI1MTEzNTk1MWNkMWI1MzhiZGRm
MWVjZTU0NTA2ZGRmNmIzYi4uOGJhMzAwOWQzYjZiNjM0OTczYmFmOGU5YTE5MDU3MzEzZDU1MTY3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxs
b3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVk
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRp
dmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2
ZUltYWdlQ0cuY3BwCmluZGV4IDQwMGQ2ZWYwYTQ1NzdkNWQ3Y2M1YmQ5Y2I2NDZhNWJhZGViZGFk
YzIuLmYyZmNlNGFhNGI3NzFkYWUzZmI0MmQ1ZGJlM2FhMTFmYjBlNmExMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3Bw
CkBAIC0zNywyMCArMzcsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnRTaXplIG5h
dGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCitJbnRTaXplIE5hdGl2
ZUltYWdlOjpzaXplKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2UpCiB7Ci0g
ICAgcmV0dXJuIGltYWdlID8gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSkgOiBJbnRTaXplKCk7CisgICAgcmV0dXJuIHBs
YXRmb3JtSW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChwbGF0Zm9ybUltYWdlLmdldCgp
KSwgQ0dJbWFnZUdldEhlaWdodChwbGF0Zm9ybUltYWdlLmdldCgpKSkgOiBJbnRTaXplKCk7CiB9
CiAKLWJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
Citib29sIE5hdGl2ZUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0CiB7Ci0gICAgQ0dJbWFnZUFscGhh
SW5mbyBpbmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhpbWFnZS5nZXQoKSk7CisgICAgQ0dJbWFn
ZUFscGhhSW5mbyBpbmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhtX3BsYXRmb3JtSW1hZ2UuZ2V0
KCkpOwogICAgIHJldHVybiAoaW5mbyA+PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Qp
ICYmIChpbmZvIDw9IGtDR0ltYWdlQWxwaGFGaXJzdCk7CiB9CiAKLUNvbG9yIG5hdGl2ZUltYWdl
U2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK0NvbG9y
IE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAogewotICAgIGlmICgh
aW1hZ2UgfHwgbmF0aXZlSW1hZ2VTaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQorICAgIGlm
ICghbV9wbGF0Zm9ybUltYWdlIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICBy
ZXR1cm4gQ29sb3IoKTsKIAogICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKQEAg
LTYwLDcgKzYwLDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKIAogICAg
IENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVD
b3B5KTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0
TWFrZSgwLCAwLCAxLCAxKSwgaW1hZ2UuZ2V0KCkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShi
aXRtYXBDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpLCBtX3BsYXRmb3JtSW1h
Z2UuZ2V0KCkpOwogCiAgICAgaWYgKCFwaXhlbFszXSkKICAgICAgICAgcmV0dXJuIENvbG9yOjp0
cmFuc3BhcmVudEJsYWNrOwpAQCAtNjgsMTEgKzY4LDExIEBAIENvbG9yIG5hdGl2ZUltYWdlU2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1
cm4gY2xhbXBUb0NvbXBvbmVudEJ5dGVzPFNSR0JBPihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNd
LCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFszXSk7CiB9CiAKLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygpCiB7
CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgaWYgKGltYWdlKQotICAgICAgICBTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyOjpjbGVhckltYWdlKGltYWdlLmdldCgpKTsKKyAgICBpZiAobV9wbGF0Zm9y
bUltYWdlKQorICAgICAgICBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckltYWdlKG1fcGxh
dGZvcm1JbWFnZS5nZXQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggY2JmNjI0ZjYyNzNjM2I1N2Fi
OWYzZGJjYzVhYjE3ZDVlMzE5NmQ0YS4uNjk1NGM1NjY1NzBhZDdhZTZjMWU3NjBmMDc4N2QzNzcw
YWNhYTY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwCkBAIC02MywxMCArNjMsMTcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNy
ZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4K
ICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7CiAgICAgcGF0dGVy
blRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRpbGVSZWN0LmhlaWdodCgpKTsKIAorICAgIFBsYXRm
b3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZTsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHRp
bGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpOworICAgIAorICAgIGlmICghcGxhdGZvcm1JbWFnZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90
aCBkaXJlY3Rpb25zLCB3ZSBjYW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGlu
c3RlYWQgb2YgY3VzdG9tIHBhdHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3Jh
Y2tzLgogICAgIGlmIChtX3JlcGVhdFggJiYgbV9yZXBlYXRZKQotICAgICAgICByZXR1cm4gQ0dQ
YXR0ZXJuQ3JlYXRlV2l0aEltYWdlMih0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpLmdldCgpLCBw
YXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKKyAgICAg
ICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIocGxhdGZvcm1JbWFnZS5nZXQoKSwg
cGF0dGVyblRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAg
ICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBu
b3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAg
Ly8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC03NywxMCArODQsMTAgQEAg
Q0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0gbV9yZXBlYXRZID8g
dGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUgcGF0dGVybiB3aWxs
IHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVyaW5nIGluIHBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1h
Z2UoKS5uYXRpdmVJbWFnZSgpLmxlYWtSZWYoKTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gcGxh
dGZvcm1JbWFnZS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0
dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxi
YWNrIH07Ci0gICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3Rh
bnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7CisgICAgcmV0dXJuIENHUGF0dGVy
bkNyZWF0ZShpbWFnZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHhTdGVwLCB5U3RlcCwg
a0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZywgVFJVRSwgJnBhdHRlcm5DYWxsYmFja3Mp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1h
Z2UubW0KaW5kZXggNTEzZjQ1NWNhZDhlNWU2MDUyNzI4ZDM0N2MzOTNkOWY0NDdmZTM4OC4uMmZh
YjY5ZTAzMzI2YzM3YjRjM2MxYzk4M2Q5NDA4OWEyMThjMjM5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBA
IFJldGFpblB0cjxDSUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6aW1hZ2VG
b3JTb3VyY2VHcmFwaGljKFNvdXJjZUdyCiAgICAgaWYgKGlzPEFjY2VsZXJhdGVkSW1hZ2VCdWZm
ZXI+KCpzb3VyY2VJbWFnZSkpCiAgICAgICAgIHJldHVybiBbQ0lJbWFnZSBpbWFnZVdpdGhJT1N1
cmZhY2U6ZG93bmNhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcj4oKnNvdXJjZUltYWdlKS5zdXJm
YWNlKCkuc3VyZmFjZSgpXTsKICAgICAKLSAgICByZXR1cm4gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJ
bWFnZTpzb3VyY2VJbWFnZS0+Y29weU5hdGl2ZUltYWdlKCkuZ2V0KCldOworICAgIHJldHVybiBb
Q0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOnNvdXJjZUltYWdlLT5jb3B5TmF0aXZlSW1hZ2UoKS0+
cGxhdGZvcm1JbWFnZSgpLmdldCgpXTsKIH0KIAogUmV0YWluUHRyPENJSW1hZ2U+IEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjppbWFnZUZvckZFQ29sb3JNYXRyaXgoY29uc3QgRkVDb2xv
ck1hdHJpeCYgZWZmZWN0LCBjb25zdCBWZWN0b3I8UmV0YWluUHRyPENJSW1hZ2U+PiYgaW5wdXRJ
bWFnZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IGQ2YmUyNzRjNjhkZWVmYjRjMGQ1MzYx
YmU2NDgxNTI0MDMyYzlmNDEuLjFkZDRhMjRhZjJlODg3MzM5MjM3ZTlhMGRhMTMwZGQ2YjI2NDEz
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC02OCw2ICs2OCw3IEBAIGVudW0gY2xhc3Mg
SXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3VGlsZWRTY2FsZWRJbWFnZSwKICAgICBEcmF3
SW1hZ2VCdWZmZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLAorICAgIERyYXdQbGF0Zm9ybUltYWdl
LAogICAgIERyYXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LAogICAgIERyYXdMaW5lLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDQ3Yzc2MmUxYTYxOTdkNmM4YjhjNDVm
YTljZmRjMDVhMDNkZWU1MWIuLjEyMDU2MjI4YTk3MGE3NzljODM2NmY5MzkyMWU5NmQyYzM1OGQ5
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTExOCw2ICsxMTgs
OCBAQCBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkKICAgICAgICAg
cmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0pKTsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNh
c3Q8RHJhd05hdGl2ZUltYWdlPihpdGVtKSk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BsYXRm
b3JtSW1hZ2U6CisgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd1BsYXRmb3JtSW1h
Z2U+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgcmV0
dXJuIHNpemVvZihkb3duY2FzdDxEcmF3UGF0dGVybj4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdSZWN0OgpAQCAtODU5LDkgKzg2MSw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCiAgICAg
cmV0dXJuIHRzOwogfQogCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1h
Z2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQotICAg
ICwgbV9pbWFnZShpbWFnZSkKKyAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkK
ICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNyY1Jl
Y3QpCkBAIC04NzEsMTIgKzg3Myw0MCBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaQogCiBEcmF3
TmF0aXZlSW1hZ2U6On5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgRHJhd05h
dGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit2b2lkIERy
YXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKLSAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJl
Y3QsIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKKyAgICAvLyBTaG91bGQgYmUgaGFuZGxlZCBieSB0
aGUgZGVsZWdhdGUuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2Um
IGl0ZW0pCit7CisgICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVt
KTsKKyAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgorICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cmVtb3RlLXJlc291cmNlLWlkZW50aWZpZXIiLCBpdGVtLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2Uo
KSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVj
dCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKK0RyYXdQbGF0Zm9ybUltYWdlOjpEcmF3UGxhdGZv
cm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBEcmF3aW5n
SXRlbShJdGVtVHlwZTo6RHJhd1BsYXRmb3JtSW1hZ2UpCisgICAgLCBtX2ltYWdlKGltYWdlKQor
ICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQorICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVz
dFJlY3QpCisgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25z
KQoreworfQorCitEcmF3UGxhdGZvcm1JbWFnZTo6fkRyYXdQbGF0Zm9ybUltYWdlKCkgPSBkZWZh
dWx0OworCit2b2lkIERyYXdQbGF0Zm9ybUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0Cit7CisgICAgY29udGV4dC5kcmF3UGxhdGZvcm1JbWFnZShtX2ltYWdlLCBt
X2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKK30K
Kworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERy
YXdQbGF0Zm9ybUltYWdlJiBpdGVtKQogewogICAgIHRzIDw8IHN0YXRpY19jYXN0PGNvbnN0IERy
YXdpbmdJdGVtJj4oaXRlbSk7CiAgICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KQEAgLTE2
NzcsNiArMTcwNyw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRT
Y2FsZWRJbWFnZTogdHMgPDwgImRyYXctdGlsZWQtc2NhbGVkLWltYWdlIjsgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIi
OyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6IHRzIDw8ICJkcmF3
LW5hdGl2ZS1pbWFnZSI7IGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUlt
YWdlOiB0cyA8PCAiZHJhdy1wbGF0Zm9ybS1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOiB0cyA8PCAiZHJhdy1wYXR0ZXJuIjsgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1JlY3Q6IHRzIDw8ICJkcmF3LXJlY3QiOyBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TGluZTogdHMgPDwgImRyYXctbGluZSI7IGJyZWFrOwpAQCAtMTgwMCw2ICsx
ODMxLDkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRl
bSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRz
IDw8IGRvd25jYXN0PERyYXdOYXRpdmVJbWFnZT4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlOgorICAgICAgICB0cyA8PCBkb3duY2Fz
dDxEcmF3UGxhdGZvcm1JbWFnZT4oaXRlbSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3UGF0dGVybj4o
aXRlbSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5k
ZXggZjAxNWJlNWU4NjYwNmVjYzJmNmNlODU3YzFmNzExNjc2OTRmZThlMy4uN2I3ZTlhMGU3MGRl
YzcyZjgyOTMzMzRjNGI5ZDU2YTRkMzJmMDI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oCkBAIC0xNzAxLDI3ICsxNzAxLDMwIEBAIE9wdGlvbmFsPFJlZjxEcmF3SW1hZ2VCdWZm
ZXI+PiBEcmF3SW1hZ2VCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogCiBjbGFzcyBE
cmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKKyAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKTsKIAorICAgIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorICAgIEZsb2F0U2l6ZSBpbWFn
ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2l6ZTsgfQogICAgIEZsb2F0UmVjdCBzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGluYXRp
b25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBJbWFnZVBh
aW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxEcmF3TmF0aXZl
SW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JU
IERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBE
cmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNp
emUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFn
ZTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rl
c3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwpAQCAtMTczMSw3ICsxNzM0
LDcgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIERyYXdOYXRpdmVJ
bWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBt
X2ltYWdlOworICAgIGVuY29kZXIgPDwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAg
ICAgZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKICAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25S
ZWN0OwogICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OwpAQCAtMTc0MSw3ICsxNzQ0LDc3IEBAIHZv
aWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+CiBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4gRHJhd05h
dGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxOYXRp
dmVJbWFnZVB0cj4gaW1hZ2U7CisgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFNp
emU+IGltYWdlU2l6ZTsKKyAgICBkZWNvZGVyID4+IGltYWdlU2l6ZTsKKyAgICBpZiAoIWltYWdl
U2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gZGVzdGluYXRpb25SZWN0OworICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25SZWN0Owor
ICAgIGlmICghZGVzdGluYXRpb25SZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBzcmNSZWN0OworICAgIGRlY29kZXIgPj4gc3JjUmVj
dDsKKyAgICBpZiAoIXNyY1JlY3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBPcHRpb25hbDxJbWFnZVBhaW50aW5nT3B0aW9ucz4gb3B0aW9uczsKKyAgICBkZWNvZGVyID4+
IG9wdGlvbnM7CisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKCpyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0
aW9ucyk7Cit9CisKK2NsYXNzIERyYXdQbGF0Zm9ybUltYWdlIDogcHVibGljIERyYXdpbmdJdGVt
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPERyYXdQbGF0Zm9ybUltYWdlPiBjcmVhdGUoY29u
c3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5EcmF3UGxhdGZvcm1JbWFnZSgpOworCisgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3JjUmVjdDsgfQorICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8RHJhd1BsYXRmb3JtSW1hZ2U+PiBkZWNvZGUoRGVj
b2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIERyYXdQbGF0Zm9ybUltYWdl
KGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJik7CisKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uUmVjdDsgfQorCisgICAgUGxhdGZvcm1JbWFnZVB0ciBtX2ltYWdlOworICAgIEZsb2F0U2l6
ZSBtX2ltYWdlU2l6ZTsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgRmxv
YXRSZWN0IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9
OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBEcmF3UGxhdGZvcm1JbWFnZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2ltYWdlOwor
ICAgIGVuY29kZXIgPDwgbV9pbWFnZVNpemU7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9u
UmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fb3B0aW9u
czsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxEcmF3UGxhdGZv
cm1JbWFnZT4+IERyYXdQbGF0Zm9ybUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBPcHRpb25hbDxQbGF0Zm9ybUltYWdlUHRyPiBpbWFnZTsKICAgICBkZWNvZGVyID4+IGlt
YWdlOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0x
NzY2LDcgKzE4MzksNyBAQCBPcHRpb25hbDxSZWY8RHJhd05hdGl2ZUltYWdlPj4gRHJhd05hdGl2
ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIW9wdGlvbnMpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gRHJhd05hdGl2ZUltYWdlOjpj
cmVhdGUoKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9w
dGlvbnMpOworICAgIHJldHVybiBEcmF3UGxhdGZvcm1JbWFnZTo6Y3JlYXRlKCppbWFnZSwgKmlt
YWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3QsICpvcHRpb25zKTsKIH0KIAogY2xh
c3MgRHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewpAQCAtMzMzMiw2ICszNDA1LDkg
QEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8RHJh
d05hdGl2ZUltYWdlPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQbGF0Zm9ybUltYWdlOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdQbGF0
Zm9ybUltYWdlPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdQYXR0ZXJuPigqdGhp
cyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzU1Myw2ICszNjI5LDEwIEBAIE9wdGlvbmFsPFJlZjxJ
dGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIGlmIChhdXRvIGl0
ZW0gPSBEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGxhdGZvcm1JbWFnZToKKyAgICAgICAgaWYg
KGF1dG8gaXRlbSA9IERyYXdQbGF0Zm9ybUltYWdlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAg
IGlmIChhdXRvIGl0ZW0gPSBEcmF3UGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CkBA
IC0zNzI3LDYgKzM4MDcsNyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1RpbGVkSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1RpbGVkU2NhbGVkSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlM
SVNUX0lURU0oRHJhd0ltYWdlQnVmZmVyKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZ
TElTVF9JVEVNKERyYXdOYXRpdmVJbWFnZSkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExB
WUxJU1RfSVRFTShEcmF3UGxhdGZvcm1JbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShEcmF3UGF0dGVybikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExB
WUxJU1RfSVRFTShEcmF3UmVjdCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1Rf
SVRFTShEcmF3TGluZSkKQEAgLTM3OTgsNiArMzg3OSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRTY2FsZWRJbWFnZSwKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlciwKICAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZSwKKyAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQbGF0Zm9ybUltYWdlLAogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4sCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3UmVjdCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4
IGQxNDJjMzc3OWNiOTkzZTczNzJiYjhiODg4N2ZjYzRjNzUyZmU5ODkuLjQwZmNhYWFhNDUzNmZi
NTA1NWYzOTQyNDVmZDA2Y2I5Y2Q5ZmM1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKQEAgLTE5NCw5ICsxOTQsMTggQEAgYm9vbCBSZWNvcmRlcjo6ZHJhd0lt
YWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRS
ZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitib29sIFJlY29yZGVyOjpkcmF3TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhcHBlbmRJdGVtQW5kVXBk
YXRlRXh0ZW50KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CisgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX2RlbGVn
YXRlLT5sb2NrUmVtb3RlTmF0aXZlSW1hZ2UoaW1hZ2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRl
KGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVjb3Jk
ZXI6OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
K3sKKyAgICBhcHBlbmRJdGVtQW5kVXBkYXRlRXh0ZW50KERyYXdQbGF0Zm9ybUltYWdlOjpjcmVh
dGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKIH0KIAog
dm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggMzFjOGM4OTYzNzhjMGNhZmJi
MjExMjg5NTk3Y2VlMjhiNGZhNzVkMi4uYjg4OTU2YTk5YjJiOTk1Y2M4MzA3MGJhOTM3YjcxNjc0
Njg4NDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02Niw2
ICs2Niw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRl
KCkgeyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBsb2NrUmVtb3RlSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wg
bG9ja1JlbW90ZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJikgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRBcHBlbmRJdGVtKGNvbnN0IEl0ZW0mKSB7IH07CiAgICAgfTsK
QEAgLTEwOCw3ICsxMDksOCBAQCBwcml2YXRlOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGls
ZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRp
bGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXpl
JiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIGJvb2wg
ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BsYXRmb3Jt
SW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJu
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJU
aGlja25lc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNw
cAppbmRleCBkYzk5NGI3MzFmYTg5NTRlZjg4MDNhZGMyOGY0ZjI3MWVmZjU4OWI3Li5jMGFhZTNh
N2Q0OWVmMmI3ZDU3YTkxNjUxNGU2MGY5ODk2ZDdkNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtNDYsMTEgKzQ2LDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKFdURk1vdmUo
c2FtcGxlKSwgcHJlc2VudGF0aW9uU2l6ZSkpOwogICAgIH0KIAotICAgIE5hdGl2ZUltYWdlUHRy
IGltYWdlKCkgY29uc3QKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlKCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmICghbV9pbWFnZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgpOworICAgICAgICByZXR1
cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAg
fQogICAgIHZvaWQgZHJvcEltYWdlKCkgeyBtX2ltYWdlID0gbnVsbHB0cjsgfQogCkBAIC0xNzks
NyArMTc5LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwKICAgICByZXR1cm4gKGZyYW1lU2l6
ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIExvY2tI
b2xkZXIgaG9sZGVyIHsgbV9zYW1wbGVHZW5lcmF0b3JMb2NrIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2ZTJlYTA3OTdiZDNjZmQzZTlkNDUwMDg0OTY4ZThk
MzMzOTU5YTdkLi41ODY5ZDhjODZhNDE5NGQzZTM4OGVjOTIwZTUyNTdlNzgyNjkxYWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90IGluZGV4KSBj
b25zdCBmaW5hbCB7IHJldHVybiBpbmRleCA8PSBtX3NhbXBsZURhdGEuc2l6ZSgpOyB9CiAgICAg
dW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKyAgICBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9p
ZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWwgeyB9CiAgICAgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYzRjZTEy
ZGI3MGZiMDlkOGJiOWIyMmUxMTBkMmI3M2Y1ZTY3OTIxOC4uZjFmODdmYmUzZWE0NTljZWNjNjI1
YmU2YzU0ZTM2YTBhYTAwNWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTMyMTUsNyArMzIxNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhp
Y3NDb250CiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoKmxheWVyQnVmZmVyLmdldCgpLCBzaXplLCBvdXRwdXRUZXh0dXJl
LCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlw
WSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0
cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAxOGU2ZDY4ODY2N2Q3YzMyYzE1
ZThmY2ZkZTdkYmM0OTliNTFkYWViLi4wYWIyYzZjOTE0YmZlM2NhZDYxMjdlZDk2MDYyZTczNzkw
OGFkMTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAg
ICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwg
R0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKSBvdmVycmlkZTsKLSAgICBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPE5h
dGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYK
IAogICAgIHZvaWQgdXBkYXRlRW5hYmxlZFZpZGVvVHJhY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCmluZGV4IGNkNTBhMWU4NmMy
MzEyNmZkYjg5MTRkYTNhMzk3MDFmZGRkNmE2NjEuLjczODBlYmY0NzY2MDFjZDBkOGRmYzM2YmY0
ODhhMTgwMjQ3YzA4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAtNTYsNyArNTYsMTAgQEAgUmVmPEltYWdlPiBJbWFnZTo6
bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSkKIAogR2RrUGl4YnVmKiBCaXRt
YXBJbWFnZTo6Z2V0R2RrUGl4YnVmKCkKIHsKLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBz
dXJmYWNlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBhdXRvIG5hdGl2ZUlt
YWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdl
IHx8IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
YXV0byYgc3VyZmFjZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgcmV0dXJu
IHN1cmZhY2UgPyBjYWlyb1N1cmZhY2VUb0dka1BpeGJ1ZihzdXJmYWNlLmdldCgpKSA6IDA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29u
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0K
aW5kZXggODEzNmMxZmZmNDViOWEzMTc3YTk2OGJiNmY2MmIyZGY4OTA3ZGE1NS4uYzI0Nzk1ZjUw
OWEzMzZlZjBkN2IxNzFkMjY2NDQ2Y2FhZWYyMTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAotSWNvbjo6SWNvbihjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCitJY29uOjpJY29uKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlKQogICAgIDog
bV9jZ0ltYWdlKGltYWdlKQogewogfQpAQCAtNDcsNyArNDcsNyBAQCBSZWZQdHI8SWNvbj4gSWNv
bjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKmZpbGVuYW1lcyov
KQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNv
bkZvckltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCitSZWZQdHI8SWNv
bj4gSWNvbjo6Y3JlYXRlSWNvbkZvckltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdl
KQogewogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyAr
NjgsNyBAQCB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCkKICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCks
IHNpemUpOwogCiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVy
cG9sYXRpb25RdWFsaXR5OjpIaWdoKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2Nn
SW1hZ2UuZ2V0KCksIHNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdQ
bGF0Zm9ybUltYWdlKG1fY2dJbWFnZSwgc2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0K
aW5kZXggNjkwOGYxMDc2MzJlODkwMThjYTkwZTk5MGYzNDQ4NzdiOTRiNmZiOS4uOWJiNTAyODkw
YzY5ODhmMzdlYmRkYjkyMzUyMTNjNWI0ZmU1MmJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtNzQsNyArNzQsNyBAQCBSZWY8
SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogICAg
IHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IEJp
dG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24oY29uc3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRy
PiYgbmF0aXZlSW1hZ2VzKQorUmV0YWluUHRyPENGRGF0YVJlZj4gQml0bWFwSW1hZ2U6OnRpZmZS
ZXByZXNlbnRhdGlvbihjb25zdCBWZWN0b3I8UmVmUHRyPE5hdGl2ZUltYWdlPj4mIG5hdGl2ZUlt
YWdlcykKIHsKICAgICAvLyBJZiBuYXRpdmVJbWFnZXMuc2l6ZSgpIGlzIHplcm8sIHdlIGtub3cg
Zm9yIGNlcnRhaW4gdGhpcyBpbWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQgZGF0YQogICAgIC8vIEV2
ZW4gdGhvdWdoIHRoZSBjYWxsIHRvIENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhIHdp
bGwgZmFpbCBhbmQgd2UnbGwgaGFuZGxlIGl0IGdyYWNlZnVsbHksCkBAIC04OSw3ICs4OSw3IEBA
IFJldGFpblB0cjxDRkRhdGFSZWY+IEJpdG1hcEltYWdlOjp0aWZmUmVwcmVzZW50YXRpb24oY29u
c3QgVmVjdG9yPE5hdGl2ZUltYWdlUHRyCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Zm9yIChjb25zdCBhdXRvJiBuYXRpdmVJbWFnZSA6IG5hdGl2ZUltYWdlcykKLSAgICAgICAgQ0dJ
bWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIG5hdGl2ZUltYWdlLmdl
dCgpLCAwKTsKKyAgICAgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24u
Z2V0KCksIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIDApOwogCiAgICAgQ0dJ
bWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwogICAgIHJldHVybiBk
YXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKaW5kZXggNjI5OGNmMzYw
NzNjN2FlNDRmNDNjNmI1NjQ0MjJiMzdiODZjZjEwNy4uZmMyY2JiNjhlYjJjNDAxYmZiMTc3MGFm
YmFjYzk2ODUyOTY5MDg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3Bw
CkBAIC0xMDksMTEgKzEwOSwxNCBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6
OmhhbmRsZShzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKG1faW1hZ2VC
dWZmZXIpKTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBzaXplID0gbmF0aXZlSW1hZ2VTaXpl
KG5hdGl2ZUltYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICBhdXRv
IHNpemUgPSBuYXRpdmVJbWFnZS0+c2l6ZSgpOwogCi0gICAgICAgICAgICAgICAgICAgIHRleHR1
cmUtPnJlc2V0KHNpemUsIG5hdGl2ZUltYWdlSGFzQWxwaGEobmF0aXZlSW1hZ2UpID8gQml0bWFw
VGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7CisgICAgICAg
ICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIG5hdGl2ZUltYWdlLT5oYXNBbHBoYSgp
ID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7
CiAjaWYgVVNFKENBSVJPKQotICAgICAgICAgICAgICAgICAgICBhdXRvKiBzdXJmYWNlID0gbmF0
aXZlSW1hZ2UuZ2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIHN1cmZhY2UgPSBuYXRp
dmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBhdXRv
KiBpbWFnZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+
dXBkYXRlQ29udGVudHMoaW1hZ2VEYXRhLCBJbnRSZWN0KEludFBvaW50KCksIHNpemUpLCBJbnRQ
b2ludCgpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSkpOwogI2Vsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKaW5kZXggYTJjOWUwOTNmYzE0YmE1YzFlODI5YzRiMjRlMTY1NDAwMzdhNDQ1NS4uMmU5
ZWVjOGZmNDZlZjQ5NGZkOWIzMWUwMGI5OWU3ZTQ0OGVkMzNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU1NSwy
NSArNTU1LDMxIEBAIGJvb2wgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorYm9vbCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCiB7
Ci0gICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBP
cGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKLSAg
ICAgICAgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OworICAgIC8vIEZJWE1F
OiBOb3QgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHIm
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKK3sKKyAgICBzdHJ1Y3QgRHJhd1BsYXRmb3JtSW1hZ2UgZmluYWwgOiBQYWlu
dGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxv
YXRSZWN0LCBGbG9hdFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNo
YWRvd1N0YXRlPiB7CisgICAgICAgIHZpcnR1YWwgfkRyYXdQbGF0Zm9ybUltYWdlKCkgPSBkZWZh
dWx0OwogCiAgICAgICAgIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVw
bGF5ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3TmF0aXZl
SW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4o
KSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOworICAgICAgICAgICAg
Q2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8
MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1
PigpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykgb3Zl
cnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICJEcmF3TmF0aXZl
SW1hZ2U8PlxuIjsKKyAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiRHJhd1BsYXRmb3JtSW1h
Z2U8PlxuIjsKICAgICAgICAgfQogICAgIH07CiAKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXpl
KTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhv
cHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3
UGxhdGZvcm1JbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0
UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQpAQCAtNTk0LDcgKzYwMCw3IEBAIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0CiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7CiAgICAgaWYgKGF1dG8gc3Vy
ZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXplKGlt
YWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IG9wdGlvbnMpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdU
Rk1vdmUoc3VyZmFjZS0+cGxhdGZvcm1JbWFnZSgpKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBk
ZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKSk7CiB9
CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCkBAIC0xMDc5LDcgKzEwODUsNyBAQCB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJm
YWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPENsaXBUb0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PihzdXJmYWNlLmdldCgpKSwgZGVzdFJlY3QpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KHN1cmZhY2UtPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKSksIGRlc3RSZWN0KSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCAzODA5M2Q0
MTM1YjRkN2I2NTExYTE2MDg3YWZmMTNmNjAzZWQxM2JhLi5kODg0YTFmMmM3OTVhNzczY2U3ZmFk
YmQ3NGQ5MDA1YzI1MzI3N2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02OSw3ICs2OSw4IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3Jl
OjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAKICAgICBib29sIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShXZWJD
b3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2VsZlNpemUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtSW1h
Z2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBkcmF3UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0
bWFwVGV4dHVyZUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuY3BwCmluZGV4IDgyNmQyZGE1YmRlZWI2Nzk1ZmQwN2YxNTE0MjQx
ODBjOGFiNWQwYzkuLmE2MTEwOTJlYzkxNDcwMDkyMjYwZDhiMDRiN2NhMzUxYzc2ZjQ2ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBU
ZXh0dXJlR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlR0wuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBCaXRtYXBUZXh0
dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0
UmVjdCwgY28KIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgTmF0aXZl
SW1hZ2VQdHIgZnJhbWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OworICAgIGF1dG8gZnJhbWVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwogICAgIGlmICghZnJhbWVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTksNyAr
MTU5LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBjb25zdCBjaGFyKiBpbWFnZURh
dGE7CiAKICNpZiBVU0UoQ0FJUk8pCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZnJh
bWVJbWFnZS5nZXQoKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBmcmFtZUltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgaW1hZ2VEYXRhID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSk7CiAg
ICAgYnl0ZXNQZXJMaW5lID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2Up
OwogI2VsaWYgVVNFKERJUkVDVDJEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAKaW5kZXggMmFiZjQzODJkMzAwZjRlMWQzMzIxOTMxZWE5OWRhNDQ0ZmExZTM4Zi4u
NDA2MzNhMDE5ZGNkZDMwN2UyMTA4ZDc1OTZmOGRlNjBhYzkzMGFlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0zOSw3ICszOSw2IEBAIFJlZjxHcmFw
aGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZh
Y3RvcnksIEdyYXBoaWNzCiAKIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYgY2xp
ZW50KQogICAgIDogR3JhcGhpY3NMYXllcihsYXllclR5cGUsIGNsaWVudCkKLSAgICAsIG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NoYW5nZU1hc2soTm9DaGFuZ2VzKQog
ICAgICwgbV9uZWVkc0Rpc3BsYXkoZmFsc2UpCiAgICAgLCBtX2RlYnVnQm9yZGVyV2lkdGgoMCkK
QEAgLTI5NCwyMiArMjkzLDIyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7CiAgICAg
ICAgIC8vIE1ha2UgdGhlIGRlY2lzaW9uIGFib3V0IHdoZXRoZXIgdGhlIGltYWdlIGhhcyBjaGFu
Z2VkLgotICAgICAgICAvLyBUaGlzIGNvZGUgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCBwb2lu
dGVyIGVxdWFsaXR5IG9uIGEgTmF0aXZlSW1hZ2VQdHIgaXMgYSB2YWxpZCB3YXkgdG8gdGVsbCBp
ZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4KKyAgICAgICAgLy8gVGhpcyBjb2RlIG1ha2VzIHRoZSBh
c3N1bXB0aW9uIHRoYXQgcG9pbnRlciBlcXVhbGl0eSBvbiBhIFBsYXRmb3JtSW1hZ2VQdHIgaXMg
YSB2YWxpZCB3YXkgdG8gdGVsbCBpZiB0aGUgaW1hZ2UgaXMgY2hhbmdlZC4KICAgICAgICAgLy8g
VGhpcyBhc3N1bXB0aW9uIGlzIHRydWUgZm9yIHRoZSBHVEsrIHBvcnQuCi0gICAgICAgIE5hdGl2
ZUltYWdlUHRyIG5ld05hdGl2ZUltYWdlUHRyID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7Ci0gICAgICAgIGlmICghbmV3TmF0aXZlSW1hZ2VQdHIpCisgICAgICAgIGF1dG8g
bmV3TmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAg
ICAgICAgaWYgKCFuZXdOYXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAobmV3TmF0aXZlSW1hZ2VQdHIgPT0gbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIpCisg
ICAgICAgIGlmIChuZXdOYXRpdmVJbWFnZSA9PSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9
IG5ld05hdGl2ZUltYWdlUHRyOworICAgICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9IG5l
d05hdGl2ZUltYWdlOwogICAgICAgICBpZiAoIW1fY29tcG9zaXRlZEltYWdlKQogICAgICAgICAg
ICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmNy
ZWF0ZSgpOwogICAgICAgICBtX2NvbXBvc2l0ZWRJbWFnZS0+c2V0Q29udGVudHNUb0ltYWdlKGlt
YWdlKTsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2UtPnVwZGF0ZUNvbnRlbnRzU2NhbGUocGFn
ZVNjYWxlRmFjdG9yKCkgKiBkZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciA9IG51bGxwdHI7CisgICAgICAgIG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9jb21wb3NpdGVkSW1hZ2Ug
PSBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aAppbmRleCAzYjNhNDgzMzAxNWM1Yzc5Y2Q2ZTZjOTMwZTJiNTc3ZjQxNGY0MTU0Li41OGY0ZjM2
NWQyNTczNDc3MjkzMjdhZmJjYWQxOGM3YzE0YzNlZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJM
YXllci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgiCkBAIC0xNTUsNyArMTU2LDcgQEAg
cHJpdmF0ZToKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIgbV9sYXllcjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGV4dHVyZU1hcHBlckxheWVyPiBtX2JhY2tkcm9wTGF5ZXI7CiAgICAgUmVmUHRyPFRl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZT4gbV9jb21wb3NpdGVkSW1hZ2U7Ci0gICAgTmF0
aXZlSW1hZ2VQdHIgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHI7CisgICAgUmVmUHRyPE5hdGl2
ZUltYWdlPiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZTsKICAgICBSZWZQdHI8VGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKIAogICAgIGludCBtX2NoYW5nZU1h
c2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCmluZGV4IGQ1MmM1ZGIwNzc2MGVmN2NmMTVmMDljMjgzNzhmY2ZkNGQ4MGQ5NTMu
LjcxMzM5MjRjOTFiOTI3ZjkxMDFhYjA5NmNhYjM2NjI3MGM0NDgxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0x
MzgsNyArMTM4LDYgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXIKICAgICAsIG1fcGVuZGluZ1Zp
c2libGVSZWN0QWRqdXN0bWVudChmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlUGxhdGZvcm1M
YXllcihmYWxzZSkKICAgICAsIG1fY29vcmRpbmF0b3IoMCkKLSAgICAsIG1fY29tcG9zaXRlZE5h
dGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcigqdGhpcywgJkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCiAgICAg
LCBtX3JlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRp
bWVyRmlyZWQpCiB7CkBAIC01ODUsMTIgKzU4NCwxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0U2hvd1JlcGFpbnRDb3VudGVyKGJvb2wgc2hvdykKIAogdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7Ci0g
ICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VQdHIgPSBpbWFnZSA/IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpIDogbnVsbHB0cjsKLSAgICBpZiAobV9jb21wb3NpdGVkSW1h
Z2UgPT0gaW1hZ2UgJiYgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIgPT0gbmF0aXZlSW1hZ2VQ
dHIpCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlID8gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkgOiBudWxscHRyOworICAgIGlmIChtX2NvbXBvc2l0ZWRJbWFnZSA9PSBp
bWFnZSAmJiBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZSA9PSBuYXRpdmVJbWFnZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9jb21wb3NpdGVkSW1hZ2UgPSBpbWFnZTsKLSAgICBtX2NvbXBvc2l0
ZWROYXRpdmVJbWFnZVB0ciA9IG5hdGl2ZUltYWdlUHRyOworICAgIG1fY29tcG9zaXRlZE5hdGl2
ZUltYWdlID0gbmF0aXZlSW1hZ2U7CiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1Rv
SW1hZ2UoaW1hZ2UpOwogICAgIG5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKQEAgLTg0OSwxMSArODQ4
LDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3Rh
dGVGb3JUaGlzTGF5ZXJPbmx5KCkKICAgICBtX25pY29zaWEuZGVsdGEuYW5pbWF0ZWRCYWNraW5n
U3RvcmVDbGllbnRDaGFuZ2VkID0gdHJ1ZTsKIAogICAgIC8vIERldGVybWluZSBpbWFnZSBiYWNr
aW5nIHByZXNlbmNlIGFjY29yZGluZyB0byB0aGUgY29tcG9zaXRlZCBpbWFnZSBzb3VyY2UuCi0g
ICAgaWYgKG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKSB7CisgICAgaWYgKG1fY29tcG9zaXRl
ZE5hdGl2ZUltYWdlKSB7CiAgICAgICAgIEFTU0VSVChtX2NvbXBvc2l0ZWRJbWFnZSk7CiAgICAg
ICAgIGF1dG8mIGltYWdlID0gKm1fY29tcG9zaXRlZEltYWdlOwogICAgICAgICB1aW50cHRyX3Qg
aW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmaW1hZ2UpOwotICAgICAgICB1
aW50cHRyX3QgbmF0aXZlSW1hZ2VJRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX2Nv
bXBvc2l0ZWROYXRpdmVJbWFnZVB0ci5nZXQoKSk7CisgICAgICAgIHVpbnRwdHJfdCBuYXRpdmVJ
bWFnZUlEID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY29tcG9zaXRlZE5hdGl2ZUlt
YWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOwogCiAgICAgICAgIC8vIFJlc3Bhd24gdGhlIElt
YWdlQmFja2luZyBvYmplY3QgaWYgdGhlIHVuZGVybHlpbmcgaW1hZ2UgY2hhbmdlZC4KICAgICAg
ICAgaWYgKG1fbmljb3NpYS5pbWFnZUJhY2tpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBlZThmNTc4NzlhZGE2Yzkx
ZjAzOTkxOTJlZjk1YzkyNGVjZTEzZTQxLi45ZjBlMTQ5NmJkY2M1ZDJkYjZhOWU2NmIwMjQyMzVk
MzcyNGE2MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCkBAIC0yMjMsNyArMjIzLDcgQEAgcHJpdmF0ZToKICAgICB9IG1fbmVl
ZHNEaXNwbGF5OwogCiAgICAgUmVmUHRyPEltYWdlPiBtX2NvbXBvc2l0ZWRJbWFnZTsKLSAgICBO
YXRpdmVJbWFnZVB0ciBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cjsKKyAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlOwogCiAgICAgVGltZXIgbV9hbmltYXRp
b25TdGFydGVkVGltZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyPiBtX3JlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dERpcmVjdDJELmNwcAppbmRleCA1N2JhODU4ZmY5OWMyZGIyOWY1ZDkxNDkyZTZhYWM4ZWQ5NzRl
Yzk5Li4xNzgwNzI5Mzg4NDY1Yzk2ZTgwOTA2M2EzOGVhYmE0YmUxNDM3ZWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGly
ZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTIwNywxMSArMjA3LDE2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgRGlyZWN0MkQ6OnJlc3RvcmUo
KnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RHJhd05hdGl2ZUltYWdlKGNvbnN0IENPTVB0cjxJRDJEMUJpdG1hcD4mIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZvcm1JbWFnZShjb25zdCBDT01QdHI8SUQyRDFC
aXRtYXA+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQbGF0
Zm9ybUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQo
KSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIERpcmVjdDJEOjpkcmF3
TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dT
dGF0ZShzdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRl
eCBjNTNkOGJmODVjMDk5Mzg4MjkyNDhmODJkZGQ5MWM5ZGUzM2MwNzgzLi5hNTZhM2I0MTlkNWVk
NGM0M2U0ZjZmMWJhOGFjYTU2MDM2NGMwYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJELmNwcApAQCAtMjgzLDcgKzI4MywxMiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0
CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFw
aGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3Rv
ciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBkcmF3UGxhdGZv
cm1JbWFnZShpbWFnZS5wbGF0Zm9ybUltYWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wdGlvbnMpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJh
d1BsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKICAgICBEaXJlY3QyRDo6
ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4
IDk1ZWIzNzBiNzViYWRlMDM5ZDZmOTQ4NzJhZWFmNGNmMWU1ZTUzY2MuLjVmOTBmZjFmMWI5ZjAy
YmIzMTdiMTYzZGY3MzYxM2MyNmZiNWRhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJELmgKQEAgLTcxLDcgKzcxLDEwIEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNp
emUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgCisg
ICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKKyAgICBib29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcAppbmRleCA3ZDI0OGU2ZDU4ZDk4
YzkyOGUzYWNlZjIyZTY5N2I2NGU4MWM1Yzk0Li42NTZjYjE0ZTcyODhmMjNhODkxN2YyMjg4OWRh
NzNlOWJjOTRhM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5k
PiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKGMKICAgICBpZiAoIWJpdG1hcENv
bnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGJpdG1hcDsKKyAg
ICBQbGF0Zm9ybUltYWdlUHRyIGJpdG1hcDsKICAgICBIUkVTVUxUIGhyID0gYml0bWFwQ29udGV4
dC0+R2V0Qml0bWFwKCZiaXRtYXApOwogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtOTAsNyArOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ+IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjcmVhdGUoYwogICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3Bh
Y2U6OlNSR0IsIG51bGxwdHIpOwogfQogCi1JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6SW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29u
c3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+JiYg
cGxhdGZvcm1Db250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRl
eHQsIE5hdGl2ZUltYWdlUHRyJiYgYml0bWFwKQorSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6
OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
PiYmIHBsYXRmb3JtQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBj
b250ZXh0LCBQbGF0Zm9ybUltYWdlUHRyJiYgYml0bWFwKQogICAgIDogSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQobG9naWNhbFNpemUsIGJhY2tlbmRTaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChXVEZNb3ZlKHBsYXRmb3JtQ29udGV4dCkpCiAg
ICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lk
IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpmbHVzaENvbnRleHQoKQogICAgIGNvbnRleHQo
KS5mbHVzaCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAor
UmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIENPTVB0
cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4gYml0bWFwVGFyZ2V0OwogICAgIEhSRVNVTFQgaHIg
PSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPnJlbmRlclRhcmdldCgpLT5RdWVyeUludGVy
ZmFjZSgmYml0bWFwVGFyZ2V0KTsKQEAgLTEzMywxMCArMTMzLDEwIEBAIE5hdGl2ZUltYWdlUHRy
IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3Jl
Q29weSBjb3B5CiAKICAgICB9CiAKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgcmV0dXJuIE5hdGl2
ZUltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSkpOwogfQogCi1zdGF0aWMgTmF0aXZlSW1hZ2VQ
dHIgY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoSUQyRDFCaXRtYXBSZW5kZXJUYXJnZXQq
IGJpdG1hcFRhcmdldCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMp
CitzdGF0aWMgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShJ
RDJEMUJpdG1hcFJlbmRlclRhcmdldCogYml0bWFwVGFyZ2V0LCBJRDJEMUJpdG1hcCogaW1hZ2Us
IGNvbnN0IEludFNpemUmIGJvdW5kcykKIHsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1h
Z2UgPyBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpIDogRmxvYXRTaXplKCk7CiAKQEAgLTE3MCwxMSAr
MTcwLDExIEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2Fs
aW5nSWZOZWVkZWQoSUQyRDFCaXRtYXBSZW5kZXJUYXJnCiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VC
dWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhh
dmlvciwgUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKIHsKLSAg
ICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIGltYWdlOwogICAg
IGlmIChtX3Jlc29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVz
ZXJ2ZVJlc29sdXRpb246OlllcykKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29w
eUJlaGF2aW9yKTsKKyAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoY29weUJlaGF2aW9y
KS0+cGxhdGZvcm1JbWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSktPnBsYXRmb3JtSW1hZ2UoKTsKIAogICAgIGF1dG8g
Yml0bWFwVGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxJRDJEMUJpdG1hcFJlbmRlclRhcmdldCo+
KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcElt
YWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFwVGFyZ2V0LCBXVEZNb3ZlKGltYWdlKSwgaW50
ZXJuYWxTaXplKCksIHJlc29sdXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwpAQCAt
MTg3LDExICsxODcsMTEgQEAgUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2Vu
ZDo6c2lua0ludG9JbWFnZShQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2UKICAgICBpZiAoIVNVQ0NF
RURFRChocikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIg
aW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFBsYXRm
b3JtSW1hZ2VQdHIgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
LT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJTY2Fs
aW5nSWZOZWVkZWQoYml0bWFwVGFyZ2V0LmdldCgpLCBXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxT
aXplKCksIHJlc29sdXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJ
RDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQorUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJ1
ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29tcGF0aWJsZUJpdG1hcChJRDJEMVJlbmRlclRhcmdldCog
cmVuZGVyVGFyZ2V0KQogewogICAgIGxvYWREYXRhVG9CaXRtYXBJZk5lZWRlZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
aXJlY3QyREJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oCmluZGV4IGNlZjM5ZWE3OTIxMWQ1ZjE4ZGY2NTA0
OTk0NzkyNDZjNDU3ZGMyNjEuLjFkNTc0YWVlY2RiOWQyMjgwMjE0ZjFjMGNhZjVmYzU2MDA5MTE0
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlOwogCi0gICAgTmF0aXZlSW1hZ2VQdHIg
Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVm
UHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9u
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxJbWFnZT4gc2lua0ludG9JbWFnZShQcmVz
ZXJ2ZVJlc29sdXRpb24pIG92ZXJyaWRlOwpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+IG1fcGxhdGZvcm1D
b250ZXh0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsK
LSAgICBOYXRpdmVJbWFnZVB0ciBtX2JpdG1hcDsKKyAgICBQbGF0Zm9ybUltYWdlUHRyIG1fYml0
bWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDc0ZDM2ZGZkNThj
Mzc2ZTg0ZjkzYjlkNGU5MjEzM2Q1NTNjZDNhNGIuLjZkYWJmMjQxM2ZlZDM1NzU5YWIwMzk1M2Rh
NDM3MjJjOGQ0MTZmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgUmVmUHRyPEJpdG1hcElt
YWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKEhCSVRNQVAgaEJpdG1hcCkKICAgICAvLyBUaGUgQml0
bWFwSW1hZ2UgdGFrZXMgb3duZXJzaGlwIG9mIHRoaXMuCiAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGNnSW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENv
bnRleHQuZ2V0KCkpKTsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwSW1hZ2UoV1RG
TW92ZShjZ0ltYWdlKSkpOworICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUo
Y2dJbWFnZSkpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRN
QVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQpAQCAtOTEsOCArOTEsOCBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0
LCBjb25zdCBGbG9hdAogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVm
IGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChpbWFnZSAm
JiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUu
aGVpZ2h0KCkpICYmIENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihzcmNTaXplLndpZHRoKCkpKSB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChpKTsKKyAgICAgICAgaWYgKGltYWdlICYmIGltYWdlLT5zaXplKCkgPT0gc3JjU2l6ZSkg
ewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAg
ICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwogICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RS
ZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdo
dCgpKSwgeyBjb21wb3NpdGVPcCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRleCBkNGVhZmM1OTlhMDBmMjM5
NTc4OTJlM2NhYTJlODVlYmNlMzgwNWMwLi4yY2VjOTlkYzcyOWZlNjVlMDg1NGVlZTcyZGZjNGVk
N2FmMDk1MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC05MywxNyArOTMsMTUgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwg
Y29uc3QgRmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgYXV0byBzdXJmYWNl
ID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAg
YXV0byBuYXRpdmVJbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoIW5h
dGl2ZUltYWdlIHx8IG5hdGl2ZUltYWdlLT5zaXplKCkgIT0gc3JjU2l6ZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQo
c3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAm
JiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKLSAgICAgICAgICAgIHNpemVfdCBjdXJy
ZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKLSAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0g
aTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRlT3AgfSk7Ci0g
ICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQorICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50
RnJhbWU7CisgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKKyAgICAgICAgZHJhdyhjdHh0LCBk
c3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhl
aWdodCgpKSwgeyBjb21wb3NpdGVPcCB9KTsKKyAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJy
ZW50RnJhbWU7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBObyBpbWFnZSBvZiB0
aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVu
dCBmcmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggMjFjMTllYzYzYjU0NjkwZmNj
MjljZDgwNmQzNDc3ZGE2OTY0ZGMzNS4uNzdiMWE0YTE4ODgxYzBiNWEyMjM5NzBjZjAxNDc2ZTFl
OTFlNjI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAg
dm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRh
cmdldCogcmVuZGVyVGFyZ2V0KQogICAgIG1fcmVuZGVyVGFyZ2V0ID0gcmVuZGVyVGFyZ2V0Owog
fQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWws
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRp
cmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBp
ZiAoIW1fbmF0aXZlRGVjb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCmluZGV4IDc2ZDdhY2E5M2UzOTI0MjdiMjY1MzU0Y2FmMmUzMmVlYWNjZjE3ZTAu
LmMwZGNhZmQ2OTU0YzU3ZGViMzkyMDRlOWZiYjA2YWQwYjFjOTExMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKICAgICB1bnNpZ25lZCBmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOworICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZl
SW1hZ2VEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKaW5kZXggOTBmNzhjMjM4ZjE4Zjk5YmM1MDljMWUzMDkx
ODNmY2FmOGE0OGM5Zi4uZWFjN2NiZTYxN2I5YjdmOTVhYWY2N2NhYjk1OTk2OWM5ZDljYTBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUlt
YWdlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcApAQCAtNTAsNjAgKzUwLDM2IEBAIHN0YXRpYyBJV0lD
SW1hZ2luZ0ZhY3RvcnkqIGltYWdpbmdGYWN0b3J5KCkKICAgICByZXR1cm4gaW1hZ2luZ0ZhY3Rv
cnk7CiB9CiAKLUludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSkKK0ludFNpemUgTmF0aXZlSW1hZ2U6OnNpemUoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYg
cGxhdGZvcm1JbWFnZSkKIHsKLSAgICBVSU5UIHdpZHRoID0gMDsKLSAgICBVSU5UIGhlaWdodCA9
IDA7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIHJldHVybiBp
bWFnZS0+R2V0UGl4ZWxTaXplKCk7CisgICAgcmV0dXJuIHBsYXRmb3JtSW1hZ2UgPyBwbGF0Zm9y
bUltYWdlLT5HZXRQaXhlbFNpemUoKSA6IEludFNpemUoKTsKIH0KIAotYm9vbCBuYXRpdmVJbWFn
ZUhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK2Jvb2wgTmF0aXZlSW1hZ2U6
Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICBpZiAoIWltYWdlKQorICAgIGlmICghbV9wbGF0Zm9y
bUltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBEMkQxX1BJWEVMX0ZPUk1BVCBw
aXhlbEZvcm1hdCA9IGltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOworICAgIEQyRDFfUElYRUxfRk9S
TUFUIHBpeGVsRm9ybWF0ID0gbV9wbGF0Zm9ybUltYWdlLT5HZXRQaXhlbEZvcm1hdCgpOwogICAg
IHJldHVybiBwaXhlbEZvcm1hdC5hbHBoYU1vZGUgIT0gRDJEMV9BTFBIQV9NT0RFX0lHTk9SRTsK
IH0KIAotQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlKQorQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xv
cigpIGNvbnN0CiB7Ci0gICAgaWYgKCFpbWFnZSB8fCBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpICE9
IEludFNpemUoMSwgMSkpCisgICAgaWYgKCFtX3BsYXRmb3JtSW1hZ2UgfHwgc2l6ZSgpICE9IElu
dFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKLQogICAgIHJldHVybiBDb2xvcigpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLXsK
LSAgICBhdXRvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwot
Ci0gICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBz
bWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5h
dGl2ZUltYWdlU2l6ZShpbWFnZSk7Ci0KLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGlu
YXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0
aGUgc3Vic2FtcGxlZCBpbWFnZS4KLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3Jj
UmVjdDsKLSAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQotICAgICAgICBh
ZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUp
LCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7Ci0KLSAgICBhdXRvJiBzdGF0
ZSA9IGNvbnRleHQuc3RhdGUoKTsKLSAgICBEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0
Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0
YXRlKHN0YXRlKSk7Ci19Ci0KLXZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCit2b2lkIE5hdGl2ZUltYWdlOjpjbGVhclN1YmltYWdlcygp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLQogI2lmIENBQ0hFX1NVQklNQUdFUwotICAgIGlm
IChpbWFnZSkKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkp
OworICAgIGlmIChtX3BsYXRmb3JtSW1hZ2UpCisgICAgICAgIFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXI6OmNsZWFySW1hZ2UobV9wbGF0Zm9ybUltYWdlLmdldCgpKTsKICNlbmRpZgogfQogCi0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5jcHAKaW5kZXggODdmODRjYTg0
YzU0ZjQyNDIyZmI0OTdjNzk1ZjI2MzUxZDY2ZDVjMC4uNjgyODFjMGVkODNjMmQzOGQ3YzdmNWY5
ZTFmMWIxZDcyMzM3YjQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0N1cnNvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0
ay5jcHAKQEAgLTYzLDEwICs2MywxMSBAQCBzdGF0aWMgR1JlZlB0cjxHZGtDdXJzb3I+IGNyZWF0
ZUN1c3RvbUN1cnNvcihJbWFnZSogaW1hZ2UsIGNvbnN0IEludFBvaW50JiBob3RTcAogICAgIElu
dFBvaW50IGVmZmVjdGl2ZUhvdFNwb3QgPSBkZXRlcm1pbmVIb3RTcG90KGltYWdlLCBob3RTcG90
KTsKICAgICByZXR1cm4gYWRvcHRHUmVmKGdka19jdXJzb3JfbmV3X2Zyb21fdGV4dHVyZSh0ZXh0
dXJlLmdldCgpLCBlZmZlY3RpdmVIb3RTcG90LngoKSwgZWZmZWN0aXZlSG90U3BvdC55KCksIGZh
bGxiYWNrQ3Vyc29yKCkuZ2V0KCkpKTsKICNlbHNlCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlm
ICghc3VyZmFjZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgYXV0byYgc3VyZmFjZSA9IG5h
dGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgSW50UG9pbnQgZWZmZWN0aXZlSG90U3Bv
dCA9IGRldGVybWluZUhvdFNwb3QoaW1hZ2UsIGhvdFNwb3QpOwogICAgIHJldHVybiBhZG9wdEdS
ZWYoZ2RrX2N1cnNvcl9uZXdfZnJvbV9zdXJmYWNlKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCks
IHN1cmZhY2UuZ2V0KCksIGVmZmVjdGl2ZUhvdFNwb3QueCgpLCBlZmZlY3RpdmVIb3RTcG90Lnko
KSkpOwogI2VuZGlmIC8vIFVTRShHVEs0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RHJhZ0ltYWdlR3RrLmNwcAppbmRleCA2YTFhNzNmOWQ3ZmZlMTA4Zjc2ZTliNDNiM2E4ZmI5M2Y5
ZTAzYTMyLi5hZWVjZmNmNTIyNzBjNTVkYmFlYmMxMGNlMTJhZTNiOTFiODNiYWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtODYsNyArODYs
NyBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJl
ZiBpbWFnZSwgZmxvYXQgZnJhY3Rpb24pCiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uKQogewotICAgIHJldHVybiBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICByZXR1cm4gaW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKIH0KIAogRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0
cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzNiNTFlYjg1MzY5Y2Fl
OGY5NzgxNTEwNDFmZWExYzJkZjVhODgzMS4uNzRhNjBjYjgzNzhlMjFiM2U0MzYyZDE4MjdlNzBi
NTFmNWVmNTBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjA0LDcgKzIw
NCw3IEBAIFNlY29uZHMgU2NhbGFibGVJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKICAgICByZXR1cm4gZHVyYXRpb247CiB9CiAKLU5hdGl2ZUlt
YWdlUHRyIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCitQbGF0
Zm9ybUltYWdlUHRyIFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYp
CiB7CiAgICAgTG9ja0hvbGRlciBsb2NrSG9sZGVyKG1fbXV0ZXgpOwogICAgIC8vIFplcm8taGVp
Z2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuIElmIHdlIGhhdmUg
YW4gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaAppbmRleCA4OGM5MGI2ZThhMmQzNGM5MDIyMGRkYTk2ZDRmY2Y3NTc2MzIwODhmLi4yODMy
MjJlYzNiYjM4NTc0NzNhY2I5N2Q3ZTUxMDRmNzJlZDRiYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAKICAgICBTZWNvbmRzIGZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CiAKLSAgICBOYXRpdmVJbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9y
bUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBE
ZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZsYWcpIHsgbV9pZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KICAgICBib29sIGlnbm9yZXNHYW1tYUFu
ZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXgg
YjgzNWE2OWNiYzQ1YjdiODkyZTBlN2JmYTE5ZmYwMTk5NWJlY2I1MC4uNjAxMjAzNzRmOWM0MzE2
OGE2NTIxYjY5YzU0YWZiZTJhMDBmNTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNr
aW5nU3RvcmVDYWlyby5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZUJhY2tpbmdTdG9yZTo6aW1hZ2UoKSBjb25zdAorUGxh
dGZvcm1JbWFnZVB0ciBJbWFnZUJhY2tpbmdTdG9yZTo6aW1hZ2UoKSBjb25zdAogewogICAgIG1f
cGl4ZWxzLT5yZWYoKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gYWRv
cHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3Vy
Y2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlz
cGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKaW5kZXggOTgxOTRkMTQzZTBkMmNmZDBiOTYxNDBl
YmU3NmFmMDMxZmExODFjMi4uM2Y0ZTRkY2Y0MmMwZmE5M2VmOWFiNjJkZDIyYTk3YzUxMzg3MDY2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rp
c3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcApAQCAtMjM5LDEx
ICsyMzksMTEgQEAgdm9pZCBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hOjplbWl0RnJhbWUoKQog
CiAgICAgICAgICAgICByZXR1cm4gSW50U2l6ZShJT1N1cmZhY2VHZXRXaWR0aChzdXJmYWNlLmdl
dCgpKSwgSU9TdXJmYWNlR2V0SGVpZ2h0KHN1cmZhY2UuZ2V0KCkpKTsKICAgICAgICAgfSwKLSAg
ICAgICAgW10oUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKSAtPiBJbnRTaXplIHsKKyAgICAg
ICAgW10oUmVmUHRyPE5hdGl2ZUltYWdlPiBpbWFnZSkgLT4gSW50U2l6ZSB7CiAgICAgICAgICAg
ICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgICAg
IHJldHVybiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRI
ZWlnaHQoaW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIHJldHVybiBpbWFnZS0+c2l6ZSgpOwog
ICAgICAgICB9CiAgICAgKTsKIApAQCAtMjYzLDExICsyNjMsMTEgQEAgdm9pZCBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZUNvY29hOjplbWl0RnJhbWUoKQogCiAgICAgICAgICAgICByZXR1cm4gbV9pbWFn
ZVRyYW5zZmVyU2Vzc2lvbi0+Y3JlYXRlTWVkaWFTYW1wbGUoc3VyZmFjZS5nZXQoKSwgc2FtcGxl
VGltZSwgc2l6ZSgpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXMsIHNhbXBsZVRpbWVdKFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSkgLT4gUmVmUHRyPE1lZGlhU2FtcGxlPiB7CisgICAg
ICAgIFt0aGlzLCBzYW1wbGVUaW1lXShSZWZQdHI8TmF0aXZlSW1hZ2U+IGltYWdlKSAtPiBSZWZQ
dHI8TWVkaWFTYW1wbGU+IHsKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJT
ZXNzaW9uLT5jcmVhdGVNZWRpYVNhbXBsZShpbWFnZS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uLT5jcmVhdGVNZWRp
YVNhbXBsZShpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBzYW1wbGVUaW1lLCBzaXplKCkp
OwogICAgICAgICB9CiAgICAgKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29h
LmgKaW5kZXggZmZjMTRiY2E2NWY2MThlMmNhYmU1ZThlZWIyZGVkNjQzNzQwZGVmNC4uMGI2YjI0
NGE0ODQ5M2QyYTVlYzRkZWIyMzM4MjMzOGFhYWM2NzhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNh
cHR1cmVTb3VyY2VDb2NvYS5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1Y7CiAKIGNsYXNzIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EgZmluYWwgOiBwdWJs
aWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgRGlzcGxheUZyYW1l
VHlwZSA9IFdURjo6VmFyaWFudDxSZXRhaW5QdHI8Q0dJbWFnZVJlZj4sIFJldGFpblB0cjxJT1N1
cmZhY2VSZWY+PjsKKyAgICB1c2luZyBEaXNwbGF5RnJhbWVUeXBlID0gV1RGOjpWYXJpYW50PFJl
ZlB0cjxOYXRpdmVJbWFnZT4sIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+PjsKICAgICBjbGFzcyBD
YXB0dXJlcgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICA6IHB1YmxpYyBMb2dn
ZXJIZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQppbmRleCAz
ZjZjYjZlZDVkZmEzOGMyNmIzNWVkYzc3YzkxOTM5MzVlNThkMjMwLi5iMDU5YTMyNTFkOGI5NjU3
YmE5MDE0YzQ0ZjgwNjNhZjgyN2IxZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjLm1tCkBAIC05MSw4ICs5MSwxMiBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjOjp1cGRhdGVTYW1wbGVCdWZmZXIoKQogICAgIGlmICghbV9pbWFnZVRyYW5zZmVyU2Vz
c2lvbikKICAgICAgICAgbV9pbWFnZVRyYW5zZmVyU2Vzc2lvbiA9IEltYWdlVHJhbnNmZXJTZXNz
aW9uVlQ6OmNyZWF0ZShwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpOwogCisgICAgUGxhdGZv
cm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlOworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gaW1h
Z2VCdWZmZXItPmNvcHlJbWFnZSgpLT5uYXRpdmVJbWFnZSgpKQorICAgICAgICBwbGF0Zm9ybUlt
YWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKwogICAgIGF1dG8gc2FtcGxlVGlt
ZSA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSgoZWxhcHNlZFRpbWUoKSArIDEwMF9tcyku
c2Vjb25kcygpKTsKLSAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IG1faW1hZ2VUcmFuc2ZlclNlc3Np
b24tPmNyZWF0ZU1lZGlhU2FtcGxlKGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoKS0+bmF0aXZlSW1h
Z2UoKS5nZXQoKSwgc2FtcGxlVGltZSwgc2l6ZSgpLCBzYW1wbGVSb3RhdGlvbigpKTsKKyAgICBh
dXRvIHNhbXBsZUJ1ZmZlciA9IG1faW1hZ2VUcmFuc2ZlclNlc3Npb24tPmNyZWF0ZU1lZGlhU2Ft
cGxlKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHNhbXBsZVRpbWUsIHNpemUoKSwgc2FtcGxlUm90YXRp
b24oKSk7CiAgICAgaWYgKCFzYW1wbGVCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggMWRiZWQz
NjU0NTZlMjI4M2FkNGUwYWRhYTFiN2M3NWM5Mzc3YzJmMS4uMzRlZDllZjhjZjRmODY2Y2EwM2Zk
Y2E5MzA0YTk2MDk2YmM2NWI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC0xMzksOCArMTM5LDEwIEBAIERyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbikKICAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3IoZHJhd0NvbnRleHQsIHdoaXRlKTsKICAgICBDR0NvbnRleHRG
aWxsUmVjdChkcmF3Q29udGV4dCwgcmVjdCk7CiAgICAgaWYgKGF1dG8gc3JjSW1hZ2UgPSBpbWct
Pm5hdGl2ZUltYWdlKCkpIHsKLSAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGRyYXdDb250
ZXh0LCBrQ0dCbGVuZE1vZGVOb3JtYWwpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJh
d0NvbnRleHQsIHJlY3QsIHNyY0ltYWdlLmdldCgpKTsKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1JbWFnZSA9IHNyY0ltYWdlLT5wbGF0Zm9ybUltYWdlKCkpIHsKKyAgICAgICAgICAgIENHQ29u
dGV4dFNldEJsZW5kTW9kZShkcmF3Q29udGV4dCwga0NHQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAg
ICAgICAgIENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgcGxhdGZvcm1JbWFn
ZS5nZXQoKSk7CisgICAgICAgIH0KICAgICB9CiAgICAgQ0dDb250ZXh0UmVsZWFzZShkcmF3Q29u
dGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fp
cm9XaW4uY3BwCmluZGV4IDNhNWUwMGJlNjcxOGIxMTg2Mjk4NjhiYWZiYWM3OTdjZTZmZTA3YjUu
LjA0MTc2NmI3MmM1MjAzMjhiNzRjZTU5YzY5ODhhNGM2YjQ0MjViYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcApAQCAtMTYyLDgg
KzE2Miw5IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGlt
ZywgSW1hZ2VPcmllbnRhdGlvbikKICAgICBjYWlyb19zZXRfc291cmNlX3JnYihjciwgMS4wLCAw
LjAsIDEuMCk7CiAgICAgY2Fpcm9fZmlsbF9wcmVzZXJ2ZShjcik7CiAKLSAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzdXJmYWNlID0gaW1nLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwotICAgIGlmIChzdXJmYWNlKSB7CisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltZy0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAobmF0aXZlSW1hZ2UgJiYgIW5hdGl2ZUlt
YWdlLT5pc051bGwoKSkgeworICAgICAgICBhdXRvJiBzdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnBs
YXRmb3JtSW1hZ2UoKTsKICAgICAgICAgLy8gRHJhdyB0aGUgaW1hZ2UuCiAgICAgICAgIGNhaXJv
X3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZS5nZXQoKSwgMC4wLCAwLjApOwogICAgICAg
ICBjYWlyb19wYWludChjcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KaW5kZXggNDkxYWQ5MGQwNTBkMzkzZWI2YWI1NTZjNzdmZDEwZTM3NDM3M2ZhMi4uMTEx
YTRiMmMzNTVjMDdiOTQ5NTk2MjQ2ZGYyMjE3NjM5YWY0YWI3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTg0MCw3ICsxODQwLDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UoSW1hZ2UmIGltYWdlLCBjb25z
dCBQYWludEluZm8mIHBhaW4KICAgICBDR1JlY3QgaW5zZXRCYWRnZVJlY3QgPSBDR1JlY3RNYWtl
KHJlY3Qud2lkdGgoKSAtIGJhZGdlRGltZW5zaW9uIC0gYmFkZ2VPZmZzZXQsIGJhZGdlT2Zmc2V0
LCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwogICAgIENHUmVjdCBiYWRnZVJlY3Qg
PSBDR1JlY3RNYWtlKDAsIDAsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CiAKLSAg
ICBDSUltYWdlICppbnB1dEltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTppbWFnZS5u
YXRpdmVJbWFnZSgpLmdldCgpXTsKKyAgICBDSUltYWdlICppbnB1dEltYWdlID0gW0NJSW1hZ2Ug
aW1hZ2VXaXRoQ0dJbWFnZTppbWFnZS5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCldOwogCiAgICAgLy8gQ3JlYXRlIGEgY2lyY2xlIHRvIGJlIHVzZWQgZm9yIHRoZSBjbGlwcGlu
ZyBwYXRoIGluIHRoZSBiYWRnZSwgYXMgd2VsbCBhcyB0aGUgZHJvcCBzaGFkb3cuCiAgICAgUmV0
YWluUHRyPENHUGF0aFJlZj4gY2lyY2xlID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUm91bmRl
ZFJlY3QoYWJzb2x1dGVCYWRnZVJlY3QsIGJhZGdlRGltZW5zaW9uIC8gMiwgYmFkZ2VEaW1lbnNp
b24gLyAyLCBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAppbmRleCA2M2VkZjEyZTIxMzMzMGRmMmRhY2I5NjU0MDI1NjUzMTYzYjQwYmMxLi5iMDYwZDcy
ODI5Y2I3MWQzMGI2YmYyODVhMzNiYjc4ZWNhNzlhOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTIwOSw5ICsyMDksOSBAQCBJbWFnZURyYXdSZXN1bHQg
U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdAogfQogCiAjaWYgVVNFKENBSVJPKQotLy8gUGFzc2VzIG93bmVyc2hpcCBvZiB0aGUg
bmF0aXZlIGltYWdlIHRvIHRoZSBjYWxsZXIgc28gTmF0aXZlSW1hZ2VQdHIgbmVlZHMKKy8vIFBh
c3NlcyBvd25lcnNoaXAgb2YgdGhlIG5hdGl2ZSBpbWFnZSB0byB0aGUgY2FsbGVyIHNvIE5hdGl2
ZUltYWdlIG5lZWRzCiAvLyB0byBiZSBhIHNtYXJ0IHBvaW50ZXIgdHlwZS4KLU5hdGl2ZUltYWdl
UHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0Nv
bnRleHQqKQorUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KikKIHsKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMjksNyArMjI5LDcgQEAgTmF0aXZlSW1hZ2VQdHIg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCopCiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKLU5hdGl2ZUltYWdlUHRyIFNWR0ltYWdl
OjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqIHRhcmdldENvbnRleHQpCiB7CiAgICAgQVNTRVJUKHRhcmdldENvbnRleHQpOwogICAgIGlm
ICghbV9wYWdlIHx8ICF0YXJnZXRDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAppbmRleCBkN2FhOGRkMTMxYWZlMzhmNWNlYmNiYTRmN2E4ODdiYWM1OWU4ZDI4Li4y
ODI1ZjlkMzg5OGQ4ZjI0Yjc0MTc4MDQ1ZThiZGE5OGUwMDU0NDdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNjMsMTAgKzYzLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNjaGVkdWxlU3RhcnRBbmltYXRpb24oKTsKIAogI2lmIFVTRShDQUlSTykKLSAgICBOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cikgZmluYWw7CisgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cikgZmluYWw7
CiAjZW5kaWYKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
IGZpbmFsOwogI2VuZGlmCiAgICAgCiAgICAgUGFnZSogaW50ZXJuYWxQYWdlKCkgeyByZXR1cm4g
bV9wYWdlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCBlYWVmYzMxZTQ3ZDAyMTUxZDY5MGM1Y2Q2NWY1
ZTgzMWIzMWFmMzY1Li4wMDI4ZDc2ZGY1OTNlMzE5NGI0ZTkzN2UyMDRiOWNiNzM3OGQyN2UyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBt
X2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUs
IG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIHNyY1JlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBkc3RSZWN0LCBvcHRpb25zKTsKIH0KIAotTmF0aXZl
SW1hZ2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKK1JlZlB0cjxOYXRpdmVJbWFn
ZT4gU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKIHsKICAgICByZXR1cm4gbV9pbWFnZS0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUodGFyZ2V0Q29udGV4dCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IGU2
NDRmN2FjZjMwZWMyMjRkZjg1MTVkODdmNzJjMmFlMWJiMzRhNWMuLjAxYjJmMWJhZmE5NTA1M2M1
OTIyNTczNzBmMmI4ZjJmNTc5NGE0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAg
ICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpIGZpbmFsOworICAgIFJlZlB0cjxO
YXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFNWR0ltYWdlRm9yQ29udGFp
bmVyKFNWR0ltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9h
dCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAppbmRleCBkNWJiMGYyZDAzZTZmMzVhOThlNDE5YzQxNWQwNTZiMjk0YmU1
N2JhLi4xMzg5YzU0MzA4NDRmZDUwOGE4YTdhZTBkMGQzMjJiN2Y4ZGQ1YzNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCkBAIC04NCw2ICs4NCwxOSBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmFwcGx5UmVzb3VyY2VJdGVtKGNvbnN0IERpc3BsYXlMaXN0OjpJdGVtJiBpdGVtLCBH
cgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBpZiAoaXRlbS50eXBlKCkgPT0g
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpIHsKKyAgICAgICAgYXV0byYg
ZHJhd0l0ZW0gPSBzdGF0aWNfY2FzdDxjb25zdCBEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdl
Jj4oaXRlbSk7CisgICAgICAgIGlmICghZHJhd0l0ZW0ucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgYXV0byBpbWFnZSA9
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRQbGF0Zm9ybUltYWdlKGRyYXdJdGVtLnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb250ZXh0LmRyYXdQbGF0Zm9ybUltYWdlKGlt
YWdlLCBkcmF3SXRlbS5pbWFnZVNpemUoKSwgZHJhd0l0ZW0uZGVzdGluYXRpb25SZWN0KCksIGRy
YXdJdGVtLnNvdXJjZSgpLCBkcmF3SXRlbS5vcHRpb25zKCkpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE2Myw2ICsxNzYsMTEgQEAg
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXQKICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdl
RGF0YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0KIAordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjYWNoZVBsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYg
aW1hZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCit7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlUGxhdGZvcm1JbWFnZShp
bWFnZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwogdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBtX3JlbW90ZVJlc291
cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCAyODVlMmY3NGI0ZDRmZDZlNmE4YzVlOTEwMjVh
MWM5MjZmNWZmYjE1Li4xN2E0NTA0MDA3ZDc4M2ZiMTJhOTQ0Y2JlMjQyZjRkMDBkZDlmOTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTg2LDYgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZsdXNo
RGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiwgRGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKKyAgICB2b2lkIGNhY2hlUGxhdGZvcm1J
bWFnZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJiwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VD
YWNoZSBtX3JlbW90ZVJlc291cmNlQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluCmluZGV4IGE4OGUwZmI2MjYyNDkxODlkOGY1YjNhMzliOWI2NjQyODYyMmNhZDMu
LjQwOGViYTUyYzNhNjQyZDJiZjcyYjU0MTZiZjcyN2QxMWM0ZTg5ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw3IEBAIG1lc3NhZ2VzIC0+
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAgICAgdm9pZCBGbHVzaERp
c3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKICAgICB2b2lkIEZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJLaXQ6OkRpc3BsYXlMaXN0Rmx1
c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICBHZXRJbWFnZURhdGEo
ZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0
LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJl
ZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDYWNoZVBsYXRmb3JtSW1h
Z2UoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBpbWFnZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICB2b2lkIFJl
bGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXgg
MjI4MjA2ODY2NGY3MjAwNmE1ZWY2NDQ3YjExMTczNGRlMzNmMTU2ZS4uNjQwZTFlMjZjODM0NDgy
OTMyZmI0ZDNjMjE4Y2M5YTc4N2FiYmZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtNDIsMTAg
KzQyLDIzIEBAIEltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1
ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZl
cnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y2FjaGVQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGlt
YWdlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wbGF0Zm9ybUltYWdlcy5hZGQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKworUGxhdGZvcm1JbWFnZVB0ciBSZW1vdGVS
ZXNvdXJjZUNhY2hlOjpjYWNoZWRQbGF0Zm9ybUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIG1fcGxhdGZv
cm1JbWFnZXMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKIHZvaWQgUmVt
b3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgaWYgKG1faW1h
Z2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG1fcGxhdGZvcm1JbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUg
cmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDA1NDZhZDA3YzI4Njc1
YTlkNjU5MDc0ODc0OWJhMmU5MWUwMzZhZDIuLjFhZDBmNTk4ZGMwMjk4YTk0ZTM0ZmYzYTg2M2Uy
OTFjNWUxNDMzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtNDQsMTIgKzQ0LDE2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAgICAg
V2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2UoY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjYWNoZWRQbGF0Zm9ybUlt
YWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxl
YXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
IAogcHJpdmF0ZToKICAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFw
PFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OkltYWdlQnVmZmVyPj47CisgICAgdXNpbmcgUmVtb3RlUGxhdGZvcm1JbWFnZUhhc2hN
YXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29y
ZTo6UGxhdGZvcm1JbWFnZVB0cj47CiAKICAgICBSZW1vdGVJbWFnZUJ1ZmZlckhhc2hNYXAgbV9p
bWFnZUJ1ZmZlcnM7CisgICAgUmVtb3RlUGxhdGZvcm1JbWFnZUhhc2hNYXAgbV9wbGF0Zm9ybUlt
YWdlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggOTkxMTFhNzg5MGI1Nzg1ZjRlMTA2MmQ2ODgyMDY1NDdk
NTI1MDNiZC4uMTFiZjhmZTJlZjQwOGJhZTkxNmQ0ZmUwNmE3ZjQzZDU5OWRkZGIzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTcsNyArMjE3LDcgQEAg
ZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dl
YkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlh
U2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHInLAor
ICAgICAgICAnV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0cicsCiAgICAgICAgICdXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvY2cvV0tJbWFnZUNHLmNwcAppbmRleCBkYjA4YzQzMThhZTg1NWM4YmM1NzgxOTJkZjg2
MWE4MTVhYjBiMjM5Li5lNTcxM2UzMDFmNjAyNmJjYjZkYjYyMWY0ZWY0YjdlMTBmNjUxOTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNHSW1hZ2UoQ0dJbWFnZVJlZiBp
bWFnZVJlZiwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCByZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgcmVjdCwgcmVjdCk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZVJlZiwgaW1hZ2VTaXplLCByZWN0LCByZWN0
KTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMzM3OTU5NmJl
NjlkOTI0YWUwY2E2ZDhmOWYxZmZiMDFiMjBjM2Q2Yy4uNWVlOTMzNTVkNzM2YTVlZGEwMWVjZTRi
NGNjNTViMjhjYzA4MDkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCkBAIC0xMTAwLDE2ICsxMTAwLDE2IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1h
Z2VIYW5kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZU5hdGl2ZUlt
YWdlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKK3N0YXRp
YyB2b2lkIGVuY29kZVBsYXRmb3JtSW1hZ2UoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZv
cm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBhdXRvIGltYWdlU2l6ZSA9IG5hdGl2
ZUltYWdlU2l6ZShpbWFnZSk7CisgICAgYXV0byBpbWFnZVNpemUgPSBOYXRpdmVJbWFnZTo6c2l6
ZShwbGF0Zm9ybUltYWdlKTsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgeyB9KTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9
IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAgICAgZW5jb2RlciA8PCAhIWdyYXBo
aWNzQ29udGV4dDsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwg
RmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSwgRmxvYXRSZWN0KHsgfSwgaW1hZ2VTaXplKSk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUltYWdlLCBpbWFn
ZVNpemUsIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6ZSksIEZsb2F0UmVjdCh7IH0sIGltYWdlU2l6
ZSkpOwogCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJpdG1hcC0+
Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CkBAIC0xMTE3LDcgKzExMTcsNyBAQCBzdGF0aWMgdm9pZCBl
bmNvZGVOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVOYXRpdmVJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFn
ZVB0ciYgbmF0aXZlSW1hZ2UpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
UGxhdGZvcm1JbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9y
bUltYWdlKQogewogICAgIE9wdGlvbmFsPGJvb2w+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsK
ICAgICBkZWNvZGVyID4+IGRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dDsKQEAgLTExMzYsMjUgKzEx
MzYsMjUgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU5hdGl2ZUltYWdl
KERlY29kZXImIGRlY29kZXIsIE5hdGl2ZUltYWdlUHQKICAgICBpZiAoIWltYWdlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgp
OwotICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgcGxhdGZvcm1JbWFnZSA9IGltYWdlLT5uYXRp
dmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCk7CisgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQg
ZW5jb2RlT3B0aW9uYWxOYXRpdmVJbWFnZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCitzdGF0aWMgdm9pZCBlbmNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2Uo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkK
IHsKLSAgICBib29sIGhhc0ltYWdlID0gISFpbWFnZTsKKyAgICBib29sIGhhc0ltYWdlID0gISFw
bGF0Zm9ybUltYWdlOwogICAgIGVuY29kZXIgPDwgaGFzSW1hZ2U7CiAKICAgICBpZiAoaGFzSW1h
Z2UpCi0gICAgICAgIGVuY29kZU5hdGl2ZUltYWdlKGVuY29kZXIsIGltYWdlKTsKKyAgICAgICAg
ZW5jb2RlUGxhdGZvcm1JbWFnZShlbmNvZGVyLCBwbGF0Zm9ybUltYWdlKTsKIH0KIAotc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZU9wdGlvbmFsTmF0aXZlSW1hZ2UoRGVjb2Rl
ciYgZGVjb2RlciwgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZU9wdGlvbmFsUGxhdGZvcm1JbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBQ
bGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIGltYWdlID0gbnVsbHB0cjsK
KyAgICBwbGF0Zm9ybUltYWdlID0gbnVsbHB0cjsKIAogICAgIGJvb2wgaGFzSW1hZ2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNJbWFnZSkpCkBAIC0xMTYzLDE3ICsxMTYzLDE3IEBAIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbE5hdGl2ZUltYWdlKERl
Y29kZXImIGRlY29kZXIsIE5hdGl2CiAgICAgaWYgKCFoYXNJbWFnZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICByZXR1cm4gZGVjb2RlTmF0aXZlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwor
ICAgIHJldHVybiBkZWNvZGVQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwog
fQogCi12b2lkIEFyZ3VtZW50Q29kZXI8TmF0aXZlSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQordm9pZCBBcmd1bWVudENvZGVy
PFBsYXRmb3JtSW1hZ2VQdHI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUGxhdGZv
cm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSkKIHsKLSAgICBlbmNvZGVPcHRpb25hbE5hdGl2ZUlt
YWdlKGVuY29kZXIsIGltYWdlKTsKKyAgICBlbmNvZGVPcHRpb25hbFBsYXRmb3JtSW1hZ2UoZW5j
b2RlciwgcGxhdGZvcm1JbWFnZSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxOYXRpdmVJbWFn
ZVB0cj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiti
b29sIEFyZ3VtZW50Q29kZXI8UGxhdGZvcm1JbWFnZVB0cj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKQogewotICAgIHJldHVybiBkZWNv
ZGVPcHRpb25hbE5hdGl2ZUltYWdlKGRlY29kZXIsIGltYWdlKTsKKyAgICByZXR1cm4gZGVjb2Rl
T3B0aW9uYWxQbGF0Zm9ybUltYWdlKGRlY29kZXIsIHBsYXRmb3JtSW1hZ2UpOwogfQogCiB2b2lk
IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYWJjYTAyNDBiNmRhOTRmODM1ODViYWYxOWNiNDk2YjA5
YjkyYjhlMy4uZjkxY2I5MTJhMjk0MmZkY2IwZDU5NjcyYzQ3OGJjNGY4YmI5NjcxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTM0LDcgKzM0
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW5wdXRNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2VQdHIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05h
dGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVhbHRpbWVNZWRpYVNvdXJjZS5oPgpAQCAtNDE5LDkgKzQxOSw5IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKICAgICBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJbWFnZUhh
bmRsZSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpO
YXRpdmVJbWFnZVB0cj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
V2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYpOwordGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyPiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlUHRyJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA5NTlkYTgzZDVmNjk4
OGIyMTE1ODhkYTdkZGI0ZmYxODNkY2U3ZDYwLi4zNjUzNDgyMGFmNWEyMjgzYzZlNmEwNmU3NDMz
MTc3YjkwM2RlMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwCkBAIC0xODUsMTEgKzE4NSw5IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxl
YXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCoKIAog
UmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsKLSAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCk7Ci0gICAgaWYg
KCFwbGF0Zm9ybUltYWdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBC
aXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUocGxhdGZvcm1JbWFnZSkpOworICAgIGlmIChhdXRv
IHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJbWFnZSgpKQorICAgICAgICByZXR1cm4gQml0bWFwSW1h
Z2U6OmNyZWF0ZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCBiYjg5NjU0NTg4NjdlYjJhMGZjNGVj
ODU3ZjM0NzVhNGU4MjVhMzVjLi4zMWMzOGYzNjEzYjM2YjUxZGVjMGZlZGExYjdiYzE3Nzc5ZGYw
ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHAKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2hlY2tJY29u
VVJMQW5kU2V0UGFnZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29ucwogICAg
IH0pOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlIGFsbG93RGF0YWJhc2VXcml0ZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChOYXRpdmVJbWFnZVB0ciYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBw
YWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUgYWxsb3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFBsYXRmb3JtSW1hZ2VQdHImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBB
bGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIo
bV9sb2FkZWRJY29uc0xvY2spOwogICAgICAgICAgICAgICAgIGlmICghbV9sb2FkZWRJY29ucy5j
b250YWlucyhpY29uVVJMKSkgewogICAgICAgICAgICAgICAgICAgICBpY29uRGF0YSA9IHRoaXMt
Pmljb25EYXRhKGljb25JRC52YWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9sb2FkZWRJ
Y29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25p
Y1RpbWU+KG51bGxwdHIsIHsgfSkpOworICAgICAgICAgICAgICAgICAgICBtX2xvYWRlZEljb25z
LnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNU
aW1lPihudWxscHRyLCB7IH0pKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBib29sIGNhbldyaXRlVG9EYXRhYmFzZSA9IG1fYWxsb3dEYXRhYmFzZVdyaXRl
ID09IEFsbG93RGF0YWJhc2VXcml0ZTo6WWVzICYmIGFsbG93RGF0YWJhc2VXcml0ZSA9PSBBbGxv
d0RhdGFiYXNlV3JpdGU6OlllczsKQEAgLTU4NywxNCArNTg3LDE0IEBAIHZvaWQgSWNvbkRhdGFi
YXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFi
YXNlV3JpdGUKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjpt
YWtlX3BhaXI8TmF0aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+KG51bGxwdHIsIE1vbm90b25p
Y1RpbWU6Om5vdygpKSk7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVkSWNv
bnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPFBsYXRmb3JtSW1hZ2VQdHIsIE1vbm90b25p
Y1RpbWU+KG51bGxwdHIsIE1vbm90b25pY1RpbWU6Om5vdygpKSk7CiAgICAgICAgICAgICBpZiAo
IWljb25EYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBCaXRt
YXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlLT5zZXREYXRhKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoaWNvbkRhdGEpKSwgdHJ1ZSkgPCBFbmNvZGVkRGF0
YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAgICAgICAgICAg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJzdCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGF1dG8gaWNvbiA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZmlyc3Q7CkBAIC02MjIs
MTMgKzYyMiwxMyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICBib29sIHJlc3Vs
dCA9IHRydWU7CiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja0hvbGRlciht
X2xvYWRlZEljb25zTG9jayk7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbG9hZGVk
SWNvbnMuc2V0KGljb25VUkwsIHN0ZDo6bWFrZV9wYWlyPE5hdGl2ZUltYWdlUHRyLCBNb25vdG9u
aWNUaW1lPihudWxscHRyLCB7IH0pKTsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9s
b2FkZWRJY29ucy5zZXQoaWNvblVSTCwgc3RkOjptYWtlX3BhaXI8UGxhdGZvcm1JbWFnZVB0ciwg
TW9ub3RvbmljVGltZT4obnVsbHB0ciwgeyB9KSk7CiAgICAgICAgICAgICBpZiAoaWNvbkRhdGFT
aXplKSB7CiAgICAgICAgICAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUo
KTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoaWNvbkRhdGEsIGljb25EYXRhU2l6ZSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNp
emVBdmFpbGFibGUpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5maXJzdCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAgICAg
ICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZpcnN0ID0gaW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICBzdGFydENsZWFyTG9hZGVkSWNvbnNUaW1lcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAppbmRleCA5
NjEyZjk5YzJjZmI3YzUxMzY0ZTgxZWM4Y2YxMDllNjMxOGUwMzliLi5lMjI1MmEwMDAwZDJiYmU1
YjZmNjljZDIyNzFkMDBhMTI1YzU3NzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICB2b2lkIGNoZWNrSWNvblVSTEFuZFNldFBhZ2VVUkxJ
Zk5lZWRlZChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxs
b3dEYXRhYmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIGJvb2wpPiYmKTsK
LSAgICB2b2lkIGxvYWRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmLCBBbGxvd0RhdGFiYXNl
V3JpdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImJik+
JiYpOworICAgIHZvaWQgbG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIEFsbG93RGF0
YWJhc2VXcml0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQbGF0Zm9ybUltYWdl
UHRyJiYpPiYmKTsKICAgICBTdHJpbmcgaWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7
CiAgICAgdm9pZCBzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqLCBzaXplX3QsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRh
YmFzZVdyaXRlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGNs
ZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC03MSw3ICs3MSw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UgbV9kYjsKICAgICBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiBtX3BhZ2VVUkxUb0ljb25VUkxNYXA7CiAgICAgTG9jayBtX3BhZ2VVUkxUb0lj
b25VUkxNYXBMb2NrOwotICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnBhaXI8V2ViQ29yZTo6TmF0
aXZlSW1hZ2VQdHIsIE1vbm90b25pY1RpbWU+PiBtX2xvYWRlZEljb25zOworICAgIEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnBhaXI8V2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGlt
ZT4+IG1fbG9hZGVkSWNvbnM7CiAgICAgTG9jayBtX2xvYWRlZEljb25zTG9jazsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1faWNvbklERm9ySWNvblVS
TFN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IGU0OGZjZTQ3MGMxMGFkZmZhNjJlNDc3Yjc4
MzkzNjNjMjVlOTgwMjkuLmJmMDNlNDNmMGZkOTFlNzNkYTgwOWRjMzJkMTQ0NTM5YTE0ZjQ4MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtODYsMTEgKzg2LDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlJ
bWFnZT4gdWlJbWFnZUZvckltYWdlKEltYWdlKiBpbWFnZSkKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZSgpOwotICAgIGlmICghY2dJbWFnZSkKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+aXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tV
SUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZS5nZXQoKV0pOworICAgIHJldHVy
biBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLT5w
bGF0Zm9ybUltYWdlKCkuZ2V0KCldKTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkVXNlRHJhZ0lt
YWdlVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBEcmFnU291cmNlU3RhdGUmIHNv
dXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGRkODljMGYwYWZhODJiMTMwZDUyNDJlZDFjOTlkNmUy
YmJmNTU4ODkuLjk0NGI1YTdiMWNjZGEzYmFiMGFlZTdlYjY3Zjk2ZDc4ZWFkOTFlODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQpAQCAtNzUwMywxMyArNzUwMywxMyBAQCBzdGF0aWMgTlNBcnJheTxOU0l0ZW1Q
cm92aWRlciAqPiAqZXh0cmFjdEl0ZW1Qcm92aWRlcnNGcm9tRHJvcFNlc3Npb24oaWQgPFVJRHJv
cAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlID0g
c25hcHNob3RXaXRob3V0U2VsZWN0aW9uLT5uYXRpdmVJbWFnZSgpOwotICAgIGlmICghdW5zZWxl
Y3RlZFNuYXBzaG90SW1hZ2UpCisgICAgaWYgKCF1bnNlbGVjdGVkU25hcHNob3RJbWFnZSB8fCB1
bnNlbGVjdGVkU25hcHNob3RJbWFnZS0+aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghX2Ryb3BBbmltYXRpb25Db3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1
bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxv
Y10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLmdldCgpIHNjYWxlOl9w
YWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVw
XSk7CisgICAgYXV0byB1bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5T
KFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdl
LT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkg
b3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKICAgICBfdW5zZWxlY3RlZENvbnRl
bnRTbmFwc2hvdCA9IGFkb3B0TlMoW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTp1
bnNlbGVjdGVkQ29udGVudEltYWdlRm9yRWRpdERyYWcuZ2V0KCldKTsKICAgICBbX3Vuc2VsZWN0
ZWRDb250ZW50U25hcHNob3Qgc2V0RnJhbWU6ZGF0YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVj
dGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNdOwogCkBAIC03NzMyLDExICs3NzMyLDExIEBA
IHN0YXRpYyBSZXRhaW5QdHI8VUlJbWFnZT4gdWlJbWFnZUZvckltYWdlKFdlYkNvcmU6OkltYWdl
KiBpbWFnZSkKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0
byBjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Ci0gICAgaWYgKCFjZ0ltYWdlKQorICAg
IGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2
ZUltYWdlIHx8IG5hdGl2ZUltYWdlLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIHJldHVybiBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1h
Z2UuZ2V0KCldKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1VJSW1hZ2UgYWxsb2NdIGluaXRXaXRo
Q0dJbWFnZTpuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXSk7CiB9CiAKIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBjcmVhdGVUYXJnZXRlZERyYWdQcmV2aWV3
IGluIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS4KQEAgLTc5OTEsMTMgKzc5OTEsMTMgQEAgc3Rh
dGljIFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBzaXplc09mUGxhY2Vob2xkZXJFbGVtZW50c1Rv
SW5zZXJ0V2hlbkRyb3BwaW5nSXQKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gdW5zZWxlY3Rl
ZFNuYXBzaG90SW1hZ2UgPSBzbmFwc2hvdFdpdGhvdXRTZWxlY3Rpb24tPm5hdGl2ZUltYWdlKCk7
Ci0gICAgICAgIGlmICghdW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UpIHsKKyAgICAgICAgaWYgKCF1
bnNlbGVjdGVkU25hcHNob3RJbWFnZSB8fCB1bnNlbGVjdGVkU25hcHNob3RJbWFnZS0+aXNOdWxs
KCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRmFpbGVkIHRvIGFu
aW1hdGUgaW1hZ2UgcGxhY2Vob2xkZXJzOiBjb3VsZCBub3QgZGVjb2RlIHVuc2VsZWN0ZWQgY29u
dGVudCBpbWFnZS4iKTsKICAgICAgICAgICAgIHN0YXRlLmNsZWFyQWxsRGVsYXllZEl0ZW1QcmV2
aWV3UHJvdmlkZXJzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIHVuc2VsZWN0ZWRDb250ZW50SW1hZ2VGb3JFZGl0RHJhZyA9IGFkb3B0TlMoW1tVSUlt
YWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6dW5zZWxlY3RlZFNuYXBzaG90SW1hZ2UuZ2V0KCkg
c2NhbGU6cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRp
b246VUlJbWFnZU9yaWVudGF0aW9uVXBdKTsKKyAgICAgICAgYXV0byB1bnNlbGVjdGVkQ29udGVu
dEltYWdlRm9yRWRpdERyYWcgPSBhZG9wdE5TKFtbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0lt
YWdlOnVuc2VsZWN0ZWRTbmFwc2hvdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6
cHJvdGVjdGVkU2VsZi0+X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkgb3JpZW50YXRpb246VUlJ
bWFnZU9yaWVudGF0aW9uVXBdKTsKICAgICAgICAgYXV0byBzbmFwc2hvdFZpZXcgPSBhZG9wdE5T
KFtbVUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6dW5zZWxlY3RlZENvbnRlbnRJbWFn
ZUZvckVkaXREcmFnLmdldCgpXSk7CiAgICAgICAgIFtzbmFwc2hvdFZpZXcgc2V0RnJhbWU6ZGF0
YS0+Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXNd
OwogICAgICAgICBbcHJvdGVjdGVkU2VsZiBhZGRTdWJ2aWV3OnNuYXBzaG90Vmlldy5nZXQoKV07
CkBAIC0xMDA0MSw3ICsxMDA0MSwxMiBAQCBzdGF0aWMgVUlNZW51ICptZW51RnJvbUxlZ2FjeVBy
ZXZpZXdPckRlZmF1bHRBY3Rpb25zKFVJVmlld0NvbnRyb2xsZXIgKnByZXZpZXdWaQogewogICAg
IGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0
V2l0aENHSW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1h
Z2UtPm5hdGl2ZUltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICAKKyAgICBhdXRvIG5h
dGl2ZUltYWdlID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1h
Z2UtPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSB8fCBuYXRpdmVJbWFnZS0+
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIHJldHVybiBbW1tV
SUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6bmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopX3ByZXNlbnRhdGlvblJl
Y3RzRm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbGxlciAqKWNv
bnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcAppbmRleCBlNzZjMDYzOGM3ZGEyYTA0ZjFlMDg5YmM0ZDQ5MGYyMjRiODdkMjE2Li5jM2Jl
ZWY1ZDE0MGI3MjQzOGRjNzUwNTYwM2FlOWE0Y2RlMmExMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC05NiwxNCArOTYsMTQgQEAg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWMKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKFdURk1vdmUoaGFuZGxlKSk7CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNv
bnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2Vu
ZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CiB7CiAjaWYgVVNFKENH
KQotICAgIHJldHVybiBtX2JpdG1hcC0+bWFrZUNHSW1hZ2VDb3B5KCk7CisgICAgcmV0dXJuIE5h
dGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpKTsKICNlbGlmIFVT
RShESVJFQ1QyRCkKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbGlmIFVTRShDQUlSTykKLSAgICBy
ZXR1cm4gbV9iaXRtYXAtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpOworICAgIHJldHVybiBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVDYWlyb1N1cmZhY2UoKSk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXgg
MDVjMTA5Y2QyMDI2ZDE1ZjgwZWI4MzJhZDlmMWI3YmEzM2JiOTU1Ny4uOWUyNGFiOTllYmM2NzVj
ZTIwMWE1OTM5NzI4YzYxOWRiYTU5NWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICptX2NvbnRleHQ7IH0KIAotICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyIGNvcHlOYXRpdmVJ
bWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9y
ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5
TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNr
aW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29w
eUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0
b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29s
dXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFE
YXRhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDIy
NjRlYmNiNjY2NGQ3MWZmZjBhNDAwNDJmYjI1NDJjYTgwNjZlYjQuLjE3NGEwNjZlZTFlOGE4Njdi
OTNmNjc4NzY2MjE2MGM5NWMyZTI0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBA
IC0xNzAsNiArMTcwLDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCisgICAgYm9vbCBsb2NrUmVtb3RlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2Um
IGltYWdlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5s
b2NrUmVtb3RlTmF0aXZlSW1hZ2VGb3JSZW1vdGVDbGllbnQoaW1hZ2UsIG1fcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB9CisKICAgICB2b2lkIHdpbGxBcHBlbmRJdGVtKGNvbnN0
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtJikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNv
bnN0ZXhwciBzaXplX3QgRGlzcGxheUxpc3RCYXRjaFNpemUgPSA1MTI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggN2EwMTkzMGFiNjZjNDQ3MzA1MTA5MzAz
NGQ0ZjM2ZDJjMGU2NDhhMi4uOTVkNDAxOGEzMDQzNjVmYWIxOGYzZDk5OGQ1MDM3ZDUxODA0N2Uy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtODksNyAr
ODksNyBAQCBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckZsdXNoRGlz
cGxheUxpc3RXYXNDb21taXR0ZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlcjsKIAogICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkKQogICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgKnRoaXMp
OwpAQCAtMTI2LDYgKzEyNiwxMSBAQCBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb21taQogICAgIHJldHVy
biBzZW50Rmx1c2hJZGVudGlmaWVyOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Y2FjaGVQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNhY2hlUGxhdGZv
cm1JbWFnZShpbWFnZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCA5OTU2NWI2ZjE2NmJiMmQ4MDYxNDE4NDk3MmUzNDM3
MDZjZTdmZWM5Li4zYWEyMDMyZDhlODIzODM0M2NmMzY5YWZmNGRlZjg5MzQ4NjJiNjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTczLDYgKzczLDcgQEAgcHVi
bGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3Jl
OjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICB2b2lkIGZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBEaXNw
bGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1hZ2UoY29uc3QgV2ViQ29y
ZTo6UGxhdGZvcm1JbWFnZVB0ciYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdh
c0NyZWF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCAzZjVh
NzNiZWMzYmYyODZlNTI5ODFkZTQ4YjkwYzMxZDAxOWQ4YzNkLi43MjhjZjJlOTRkYmQ5M2JhODI4
ZmZjZGU0NWJlZjhkYzQ2MTUyMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwCkBAIC01OCw2ICs1OCwxNSBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVs
ZWFzZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogICAgIHJlbGVh
c2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCit2b2lk
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKCFtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVt
b3ZlIHRoaXMgcmVzb3VyY2UgdW5sZXNzIGl0J3MgcGVuZGluZyByZXBsYXlpbmcgYmFjay4KKyAg
ICByZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30K
KwogYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmxvY2tSZW1vdGVJbWFnZUJ1ZmZlckZv
clJlbW90ZUNsaWVudChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQogewogICAgIGlmICghaW1hZ2VCdWZm
ZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpCkBAIC03Miw2ICs4MSwyMiBAQCBib29s
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZUltYWdlQnVmZmVyRm9yUmVtb3Rl
Q2xpZW50KEltYWdlQnVmZmVyJgogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZU5hdGl2ZUltYWdlRm9yUmVtb3RlQ2xpZW50KE5h
dGl2ZUltYWdlJiBpbWFnZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVu
dElkZW50aWZpZXIpCit7CisgICAgYXV0byByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBp
bWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICBpZiAoIXJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICgh
bV9uYXRpdmVJbWFnZXMuY29udGFpbnMoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCkpKSB7CisgICAgICAgIG1fbmF0aXZlSW1hZ2VzLmFkZChpbWFnZS5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGltYWdlLnNldE9ic2VydmVyKHRoaXMpOworICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZVBsYXRmb3JtSW1hZ2UoaW1hZ2Uu
cGxhdGZvcm1JbWFnZSgpLCBpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7Cisg
ICAgfQorICAgIAorICAgIGxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudChyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bG9ja1JlbW90ZVJl
c291cmNlRm9yUmVtb3RlQ2xpZW50KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVD
bGllbnRJZGVudGlmaWVyKQogewogICAgIC8vIEFkZCB0aGUgInJlc291cmNlIC0+IGNsaWVudCIg
ZGVwZW5kZW5jeSBpbiBtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCmluZGV4IGU4NmJlN2RlYjA5MmJhOGYxM2I3ZGI1
NWFlZTg3ODAyYzc4ZGQ0OGMuLjQ0YjlhMWU4ZjFkMTdmYTVhYzBiMGMxNzg0NWUyNGJhYzUzMGRl
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMzgsNyArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Owog
Ci1jbGFzcyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgeworY2xhc3MgUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5IDogcHVibGljIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpPYnNlcnZlciB7CiBwdWJs
aWM6CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYpOwogCkBAIC00NywxNyArNDcsMjIgQEAgcHVibGljOgogICAgIHZvaWQgcmVsZWFzZUlt
YWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBi
b29sIGxvY2tSZW1vdGVJbWFnZUJ1ZmZlckZvclJlbW90ZUNsaWVudChXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJ
ZGVudGlmaWVyKTsKKyAgICBib29sIGxvY2tSZW1vdGVOYXRpdmVJbWFnZUZvclJlbW90ZUNsaWVu
dChXZWJDb3JlOjpOYXRpdmVJbWFnZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKICAgICB2b2lkIHVubG9ja1JlbW90ZVJlc291
cmNlc0ZvclJlbW90ZUNsaWVudChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgdXNpbmcgUmVtb3RlQ2xp
ZW50c0hhc2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj47CiAgICAgdXNpbmcgUmVtb3RlUmVzb3VyY2VDbGllbnRzSGFzaE1hcCA9IEhhc2hNYXA8V2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZW1vdGVDbGllbnRzSGFzaFNldD47
CiAgICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqPjsK
KyAgICB1c2luZyBSZW1vdGVOYXRpdmVJbWFnZUhhc2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj47CiAKKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJl
RGVsZXRlZChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOwor
ICAgIAogICAgIHZvaWQgbG9ja1JlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50KFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBS
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKKyAgICBSZW1vdGVO
YXRpdmVJbWFnZUhhc2hTZXQgbV9uYXRpdmVJbWFnZXM7CiAgICAgUmVtb3RlUmVzb3VyY2VDbGll
bnRzSGFzaE1hcCBtX2xvY2tlZFJlbW90ZVJlc291cmNlRm9yUmVtb3RlQ2xpZW50czsKICAgICBS
ZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1fcGVuZGluZ1VubG9ja1JlbW90ZVJlc291cmNl
Rm9yUmVtb3RlQ2xpZW50czsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmlu
ZGV4IGNhMDI1MmE0NmUyYzA3MWZmZDUzNGI4MzNkYmI0NTU1ODY3ZWQ1ODMuLjc5YTIxMTRiYTI0
OTcwMmNjNTU0N2ZmYTEzYjMzYzM5NjA4NjQ5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAKQEAgLTgxMSw3ICs4MTEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmgKaW5kZXggNWY4NWRmODUxOWUxYTMxZTYyODNkYThmYjAwOGExMzViMjEzZTM0My4uMGQ3
NTUyZjQ5M2YwNzQyNDEyYTZiZTI5NzM5NjIxNmRjOTVmNTgxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5oCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50KFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFs
OwogICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgYm9vbCBjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7Ci0gICAgV2ViQ29yZTo6TmF0aXZl
SW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOwog
CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAppbmRleCA4MWNiMzFiODVmZjI2ODUxMDBiOTQyZjhlY2Q2NTE4N2NkNDI4MzgxLi45Mjk3
NjBlMmRmNmJlM2NiMjdkMGU1ZWY2ZmVjMjMzZmY3OTgxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTY4Myw3ICsxNjgzLDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpkaWRGYWlsTG9hZChXZWJGcmFtZSogd2ViRnJhbWUsIGJvb2wg
d2FzQ2FuY2VsbGVkKQogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RhdGljIGJvb2wgaXNBbG1vc3RT
b2xpZENvbG9yKEJpdG1hcEltYWdlKiBiaXRtYXApCiB7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9
IGJpdG1hcC0+bmF0aXZlSW1hZ2UoKS5nZXQoKTsKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gYml0
bWFwLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCk7CiAgICAgQVNTRVJUKENH
SW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKIAogICAgIENHQml0bWFwSW5m
byBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTS5tbQppbmRleCA1YjhjYjZjMzhjN2E1YjE2Njc0YmYxNGFjMDEyMGMzNWZkZjNh
ZGY2Li43YWEwMDRhNjE2OWViNDAyMDRkYjIyNGQ2ZWRjMjI2ZjI3Mjc0OGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTUzNiw3ICs1MzYsNyBAQCBpZCA8RE9NRXZlbnRUYXJn
ZXQ+IGtpdChFdmVudFRhcmdldCogdGFyZ2V0KQogCiAgICAgaWYgKHRleHRJbmRpY2F0b3IpIHsK
ICAgICAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHRleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgp
KQotICAgICAgICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS5hdXRvcmVsZWFz
ZSgpOworICAgICAgICAgICAgKmNnSW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2UoKS0+cGxhdGZv
cm1JbWFnZSgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKCEqY2dJbWFnZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViQ2FjaGUubW0KaW5kZXggZDgxNzY5OTY3NWVj
ZmJiOWMyMzY3OTM1YzIyYzU3Yzc4YTRhMzRmMS4uZmQwOTZkZGY5NTBjYmZlODE2M2IxMzY3NWFj
ZGRlMzE3YjlmMzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkNhY2hlLm1t
CkBAIC0xNzEsMTAgKzE3MSwxNiBAQCBjbGFzcyBEZWZhdWx0U3RvcmFnZVNlc3Npb25Qcm92aWRl
ciA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKICAgICBXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIGlmICghaXM8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KGNh
Y2hlZFJlc291cmNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpj
YWNoZWRSZXNvdXJjZSk7CisKKyAgICBhdXRvJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNv
cmU6OkNhY2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwogICAgIGlmICghY2FjaGVkSW1hZ2Uu
aGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNhY2hlZElt
YWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCk7CisgICAgCisgICAgYXV0byBuYXRpdmVJ
bWFnZSA9IGNhY2hlZEltYWdlLmltYWdlKCktPm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRp
dmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbmF0aXZlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXgg
YjYwZTMyNmYxMGJmNWNlM2NhNmZhM2Y0MGIxYWE4ZTA5NzlkNDIzNy4uNjNlOTUyZDdlMmMxNGVj
OTEzYzE3OWE1YTJjNjdkZTc1MzdhZDBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQpAQCAtODQ1LDE0ICs4NDUsMTQgQEAgcHJpdmF0ZToKICAgICBfdGV4
dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcyA9IGNyZWF0ZU5TQXJyYXkoaW5kaWNhdG9y
RGF0YS50ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKS5sZWFrUmVmKCk7CiAgICAg
X2NvbnRlbnRJbWFnZVNjYWxlRmFjdG9yID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VTY2Fs
ZUZhY3RvcjsKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0
KQotICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0
aEhpZ2hsaWdodC5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRh
dGlvbjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOworICAgICAgICBfY29udGVudElt
YWdlV2l0aEhpZ2hsaWdodCA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhD
R0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodC5nZXQoKS0+bmF0
aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9u
OlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CiAgICAgaWYgKGluZGljYXRvckRhdGEu
Y29udGVudEltYWdlKQotICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxsb2NVSUltYWdl
SW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0
KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9y
aWVudGF0aW9uVXBdOworICAgICAgICBfY29udGVudEltYWdlID0gW1BBTDo6YWxsb2NVSUltYWdl
SW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0
KCktPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmll
bnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CiAKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5j
b250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uKSB7CiAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24uZ2V0KCktPm5hdGl2
ZUltYWdlKCk7CiAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkgewotICAgICAgICAgICAgX2NvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGlu
aXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpV
SUltYWdlT3JpZW50YXRpb25VcF07CisgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNl
bGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5h
dGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246
VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRT
ZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gaW5kaWNhdG9yRGF0YS5jb250ZW50
SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICAgICAg
fQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412947</attachid>
            <date>2020-11-02 11:02:19 -0800</date>
            <delta_ts>2020-11-10 14:13:45 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>NativeImageCaching.patch</filename>
            <type>text/plain</type>
            <size>17998</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMjU5YTQyZmEyN2YuLjVjZGNkYTQ3NTQ0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIwLTExLTAyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IENhY2hlIHRoZSBOYXRpdmVJbWFnZSBpbiBH
UFUgUHJvY2VzcyBhbmQgYWxsb3cgcmVmZXJlbmNpbmcgaXQgd2l0aCBpdHMgUmVtb3RlUmVzb3Vy
Y2VJZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTc1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKwogMjAyMC0xMS0wMSAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIENvbnRy
b2wgdGhlIGxpZmUgY3ljbGUgb2YgdGhlIHBsYXRmb3JtIGltYWdlIGJ5IGEgbmV3IGNsYXNzIG5h
bWVkIE5hdGl2ZUltYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBlZTc2OTgxZGNlYjAuLmM0OGVkOGI3NjdiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCkBAIC03NTgsNyArNzU4LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKKyAgICBpZiAobV9pbXBsICYmIGltYWdl
LmlzUERGRG9jdW1lbnRJbWFnZSgpKQogICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2Uo
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogCiAgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlz
LCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwp
CisgICAgaWYgKG1faW1wbCAmJiBpbWFnZS5pc1BERkRvY3VtZW50SW1hZ2UoKSkKICAgICAgICAg
cmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9u
cy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKQEAgLTc4Myw3ICs3ODMsNyBAQCBJbWFnZURyYXdS
ZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQorICAgIGlm
IChtX2ltcGwgJiYgaW1hZ2UuaXNQREZEb2N1bWVudEltYWdlKCkpCiAgICAgICAgIHJldHVybiBt
X2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2Nh
bGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1h
Z2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAwYWZhYTkwNzA5ZDguLjVhZWQ5MWJmN2NkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAyMC0xMS0wMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAg
ICAgICBbR1BVIFByb2Nlc3NdOiBDYWNoZSB0aGUgTmF0aXZlSW1hZ2UgaW4gR1BVIFByb2Nlc3Mg
YW5kIGFsbG93IHJlZmVyZW5jaW5nIGl0IHdpdGggaXRzIFJlbW90ZVJlc291cmNlSWRlbnRpZmll
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTk2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseVJlc291cmNlSXRlbSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlUGxhdGZvcm1JbWFnZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlUGxhdGZv
cm1JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlZFBs
YXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxl
YXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZVBsYXRmb3JtSW1hZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
bmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5Ojpsb2NrUmVtb3RlTmF0aXZlSW1hZ2VGb3JSZW1vdGVDbGllbnQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5o
OgorCiAyMDIwLTExLTAxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtHUFUgUHJvY2Vzc10gQ29udHJvbCB0aGUgbGlmZSBjeWNsZSBvZiB0aGUgcGxhdGZv
cm0gaW1hZ2UgYnkgYSBuZXcgY2xhc3MgbmFtZWQgTmF0aXZlSW1hZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAppbmRleCBkNWJiMGYyZDAzZTYuLjEzODljNTQzMDg0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcApAQCAtODQsNiArODQsMTkgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjphcHBseVJlc291cmNlSXRlbShjb25zdCBEaXNwbGF5TGlzdDo6SXRlbSYgaXRlbSwgR3IKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgaWYgKGl0ZW0udHlwZSgpID09IERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKSB7CisgICAgICAgIGF1dG8mIGRyYXdJ
dGVtID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZSY+KGl0
ZW0pOworICAgICAgICBpZiAoIWRyYXdJdGVtLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGF1dG8gaW1hZ2UgPSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkUGxhdGZvcm1JbWFnZShkcmF3SXRlbS5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgICAgIGlmICghaW1hZ2UpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29udGV4dC5kcmF3UGxhdGZvcm1JbWFnZShpbWFnZSwg
ZHJhd0l0ZW0uaW1hZ2VTaXplKCksIGRyYXdJdGVtLmRlc3RpbmF0aW9uUmVjdCgpLCBkcmF3SXRl
bS5zb3VyY2UoKSwgZHJhd0l0ZW0ub3B0aW9ucygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNjMsNiArMTc2LDExIEBAIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0CiAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpJbWFnZURhdGFS
ZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7CiB9CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y2FjaGVQbGF0Zm9ybUltYWdlKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdl
LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQoreworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZVBsYXRmb3JtSW1hZ2UoaW1hZ2Us
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggMjg1ZTJmNzRiNGQ0Li4xN2E0NTA0MDA3ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaApAQCAtODYsNiArODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1
c2hEaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNw
bGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Qm
LCBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOworICAgIHZvaWQgY2FjaGVQbGF0Zm9ybUltYWdl
KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHImLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hl
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4KaW5kZXggYTg4ZTBmYjYyNjI0Li40MDhlYmE1MmMzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAgICAgdm9pZCBGbHVzaERpc3Bs
YXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5TGlzdCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKICAgICB2b2lkIEZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0IGRpc3BsYXlMaXN0LCBXZWJLaXQ6OkRpc3BsYXlMaXN0Rmx1c2hJ
ZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICBHZXRJbWFnZURhdGEoZW51
bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBX
ZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVy
ZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgdm9pZCBDYWNoZVBsYXRmb3JtSW1hZ2Uo
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBpbWFnZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICB2b2lkIFJlbGVh
c2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggMjI4
MjA2ODY2NGY3Li42NDBlMWUyNmM4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTQyLDEwICs0
MiwyMyBAQCBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZm
ZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJz
LmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGU6OmNhY2hlUGxhdGZvcm1JbWFnZShjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFn
ZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcGxhdGZvcm1JbWFnZXMuYWRkKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgaW1hZ2UpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK1BsYXRmb3JtSW1hZ2VQdHIgUmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y2FjaGVkUGxhdGZvcm1JbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX3BsYXRmb3Jt
SW1hZ2VzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCiB2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmIChtX2ltYWdl
QnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0
dXJuOworICAgIGlmIChtX3BsYXRmb3JtSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJl
c291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAppbmRleCAwNTQ2YWQwN2MyODYuLjFh
ZDBmNTk4ZGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC00NCwxMiArNDQsMTYgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKICAgICBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNhY2hlUGxhdGZvcm1JbWFnZShjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNhY2hlZFBsYXRmb3JtSW1h
Z2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVh
c2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
CiBwcml2YXRlOgogICAgIHVzaW5nIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+PjsKKyAgICB1c2luZyBSZW1vdGVQbGF0Zm9ybUltYWdlSGFzaE1h
cCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlUHRyPjsKIAogICAgIFJlbW90ZUltYWdlQnVmZmVySGFzaE1hcCBtX2lt
YWdlQnVmZmVyczsKKyAgICBSZW1vdGVQbGF0Zm9ybUltYWdlSGFzaE1hcCBtX3BsYXRmb3JtSW1h
Z2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCmluZGV4IDIyNjRlYmNiNjY2NC4uMTc0YTA2NmVlMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaApAQCAtMTcwLDYgKzE3MCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIGJvb2wgbG9ja1JlbW90ZU5hdGl2ZUltYWdlKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlJiBpbWFnZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5KCkubG9ja1JlbW90ZU5hdGl2ZUltYWdlRm9yUmVtb3RlQ2xpZW50KGltYWdlLCBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgfQorCiAgICAgdm9pZCB3aWxsQXBw
ZW5kSXRlbShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbSYpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IERpc3BsYXlMaXN0QmF0Y2hTaXplID0gNTEyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDdhMDE5MzBhYjY2
Yy4uOTVkNDAxOGEzMDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3
YWl0Rm9yRmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCiAgICAgaWYgKHJlbmRlcmluZ01v
ZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCiAgICAgICAgIGltYWdlQnVmZmVyID0g
QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCAqdGhpcyk7CkBAIC0xMjYsNiArMTI2LDExIEBAIERpc3BsYXlMaXN0Rmx1c2hJZGVu
dGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZENv
bW1pCiAgICAgcmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7CiB9CiAKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZVBsYXRmb3JtSW1hZ2UoY29uc3QgUGxhdGZvcm1JbWFn
ZVB0ciYgaW1hZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Q2FjaGVQbGF0Zm9ybUltYWdlKGltYWdlLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDk5NTY1YjZmMTY2Yi4uM2Fh
MjAzMmQ4ZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTcz
LDYgKzczLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5k
Q29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjYWNoZVBsYXRmb3JtSW1h
Z2UoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgd2FpdEZvckltYWdl
QnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcAppbmRleCAzZjVhNzNiZWMzYmYuLjcyOGNmMmU5NGRiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcApAQCAtNTgsNiArNTgsMTUgQEAgdm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmUKICAgICByZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKIH0KIAordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6Om5hdGl2ZUltYWdlV2ls
bEJlRGVsZXRlZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQoreworICAgIGlmICghbV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRlbGwgdGhlIEdQ
VSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlIHVubGVzcyBpdCdzIHBlbmRpbmcgcmVw
bGF5aW5nIGJhY2suCisgICAgcmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7Cit9CisKIGJvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpsb2NrUmVt
b3RlSW1hZ2VCdWZmZXJGb3JSZW1vdGVDbGllbnQoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKIHsKICAg
ICBpZiAoIWltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKQpAQCAtNzIs
NiArODEsMjIgQEAgYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmxvY2tSZW1vdGVJbWFn
ZUJ1ZmZlckZvclJlbW90ZUNsaWVudChJbWFnZUJ1ZmZlciYKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmxvY2tSZW1vdGVOYXRpdmVJbWFnZUZv
clJlbW90ZUNsaWVudChOYXRpdmVJbWFnZSYgaW1hZ2UsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyID0gaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAg
aWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAoIW1fbmF0aXZlSW1hZ2VzLmNvbnRhaW5zKGltYWdlLnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcigpKSkgeworICAgICAgICBtX25hdGl2ZUltYWdlcy5hZGQoaW1hZ2Uu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOworICAgICAgICBpbWFnZS5zZXRPYnNlcnZl
cih0aGlzKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVQbGF0
Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCkpOworICAgIH0KKyAgICAKKyAgICBsb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1v
dGVDbGllbnQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCByZW1vdGVDbGllbnRJZGVudGlm
aWVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OmxvY2tSZW1vdGVSZXNvdXJjZUZvclJlbW90ZUNsaWVudChSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcikKIHsKICAgICAvLyBBZGQgdGhlICJyZXNv
dXJjZSAtPiBjbGllbnQiIGRlcGVuZGVuY3kgaW4gbV9sb2NrZWRSZW1vdGVSZXNvdXJjZUZvclJl
bW90ZUNsaWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAppbmRleCBlODZiZTdk
ZWIwOTIuLjQ0YjlhMWU4ZjFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk7CiAKLWNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7CitjbGFz
cyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5Jik7CiAKQEAgLTQ3LDE3ICs0NywyMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKIAogICAgIGJvb2wgbG9ja1JlbW90ZUltYWdlQnVmZmVyRm9yUmVtb3RlQ2xpZW50
KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOworICAgIGJvb2wgbG9ja1JlbW90ZU5hdGl2ZUlt
YWdlRm9yUmVtb3RlQ2xpZW50KFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbW90ZUNsaWVudElkZW50aWZpZXIpOwogICAgIHZvaWQg
dW5sb2NrUmVtb3RlUmVzb3VyY2VzRm9yUmVtb3RlQ2xpZW50KFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW1vdGVDbGllbnRJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKICAg
ICB1c2luZyBSZW1vdGVDbGllbnRzSGFzaFNldCA9IEhhc2hTZXQ8V2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPjsKICAgICB1c2luZyBSZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNo
TWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90
ZUNsaWVudHNIYXNoU2V0PjsKICAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5SGFzaE1h
cCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcio+OworICAgIHVzaW5nIFJlbW90ZU5hdGl2ZUltYWdlSGFzaFNldCA9IEhh
c2hTZXQ8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPjsKIAorICAgIHZvaWQg
bmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcikgb3ZlcnJpZGU7CisgICAgCiAgICAgdm9pZCBsb2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1v
dGVDbGllbnQoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlQ2xpZW50SWRlbnRpZmllcik7CiAgICAg
dm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKIAogICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFwIG1faW1hZ2VCdWZm
ZXJzOworICAgIFJlbW90ZU5hdGl2ZUltYWdlSGFzaFNldCBtX25hdGl2ZUltYWdlczsKICAgICBS
ZW1vdGVSZXNvdXJjZUNsaWVudHNIYXNoTWFwIG1fbG9ja2VkUmVtb3RlUmVzb3VyY2VGb3JSZW1v
dGVDbGllbnRzOwogICAgIFJlbW90ZVJlc291cmNlQ2xpZW50c0hhc2hNYXAgbV9wZW5kaW5nVW5s
b2NrUmVtb3RlUmVzb3VyY2VGb3JSZW1vdGVDbGllbnRzOwogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413740</attachid>
            <date>2020-11-10 14:13:49 -0800</date>
            <delta_ts>2020-11-10 14:37:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201110141348.patch</filename>
            <type>text/plain</type>
            <size>51666</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTljYzBhYmM0MDE2MjI2
NDhiNDc1YWY5MzMzNjc1ZGJhM2E5ZTI4ZC4uODY3YzdhMjMwYmFjNWFlOTkyMTkwZDNlZDA2MjMy
NzEyMmUxYmU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIwLTExLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2lu
ZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggYWxsIHRoZSBkcmF3
SW1hZ2UgZnVuY3Rpb25zIHdpbGwgbm90IGJlIHJlY29yZGVkIGFzIGRpc3BsYXkKKyAgICAgICAg
bGlzdCBpdGVtcy4gSW5zdGVhZCB3ZSBhcmUgZ29pbmcgdG8gbGV0IHRoZW0gcHJvY2VlZCB0aWxs
IHRoZXkgcmVhY2ggbG93ZXIKKyAgICAgICAgbGV2ZWwgY2FsbHMgc3VjaCBhcyBkcmF3TmF0aXZl
SW1hZ2UoKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgIFdlIGhhdmUgdG8g
bGV0IHRoZXNlIGZ1bmN0aW9uIHByb2NlZWQgdGlsbCB0aGV5IGVuZCB1cCBjYWxsaW5nIHRoZSAK
KyAgICAgICAgRE9NIHJlbmRlcmluZyBmb3IgU1ZHSW1hZ2UsIFBERkRvY3VtZW50SW1hZ2U6OmRy
YXcgZm9yIHBkZiBpbWFnZSBhbmQgCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZSBmb3IgdGhlIHJl
c3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1h
Z2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpOYXRpdmVJbWFnZTo6c2V0UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpzZXRPYnNlcnZlcik6CisgICAgICAgIEFkZCBhbiBvYnNl
cnZlciB0byBOYXRpdmVJbWFnZSB3aG9zZSBqb2IgaXMgdG8gb2JzZXJ2ZSB3aGVuIGl0IGlzIGJl
aW5nCisgICAgICAgIGRlc3Ryb3llZC4gQWRkIGFsc28gYW4gcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHNvIGl0IGNhbiBiZSB1c2VkIHRvCisgICAgICAgIHJlZmVyZW5jZSB0aGUgTmF0aXZl
SW1hZ2UgaW4gYSBOYXRpdmVJbWFnZUhhc2hNYXAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oOiBBZGRlZC4KKyAgICAgICAgVGhpcyBkZWZpbml0
aW9uIGNhbiBiZSB1c2VkIHRvIGVuY29kZS9kZWNvZGUgYSBSZWY8TmF0aXZlSW1hZ2U+IGZvciBJ
UEMKKyAgICAgICAgbWVzc2FnZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Om1fbmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjpuYXRpdmVJbWFnZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRv
IGNhY2hlIHRoZSBOYXRpdmVJbWFnZSBpbiBEaXNwbGF5TGlzdCBzdWNoIHRoYXQgaXRzCisgICAg
ICAgIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBjYW4gYmUgdXNlZCB3aGVuIHJlY29yZGlu
ZyBEcmF3TmF0aXZlSW1hZ2UKKyAgICAgICAgYW5kIG1fbmF0aXZlSW1hZ2VzIGNhbiBiZSB1c2Vk
IHRvIGFjY2VzcyB0aGUgTmF0aXZlSW1hZ2Ugd2hlbiByZXBsYXlpbmcKKyAgICAgICAgYmFjayBE
cmF3TmF0aXZlSW1hZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjphcHBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpE
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRp
dmVJbWFnZTo6cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpkZWNv
ZGUpOiBEZWxldGVkLgorICAgICAgICBEcmF3TmF0aXZlSW1hZ2UgaXMgYW4gaW5saW5lIGl0ZW0g
bm93LiBObyBlbmNvZGluZy9kZWNvZGluZyBpcyBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6
OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICBBc2sgdGhlIERpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6RGVsZWdhdGUgdG8gY2FjaGUgdGhlIE5hdGl2ZUltYWdlLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpSZXBsYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKyAgICAg
ICAgUmVzb2x2ZSB0aGUgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG9mIERyYXdOYXRpdmVJ
bWFnZSB0byBhIE5hdGl2ZUltYWdlCisgICAgICAgIGZyb20gdGhlIG1fbmF0aXZlSW1hZ2VzIGJl
Zm9yZSBkcmF3aW5nIGl0LgorCiAyMDIwLTExLTEwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBBZGQgc3VwcG9ydCBmb3IgcmVwbGFjZWQgZWxl
bWVudCBiYXNlbGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlNzEwMzU0MjVkMjMxYmYyNTAxYzQ1MDhhOTlmMWNh
NmRkZjk5NDA3Li5jNDM0OGM2ZjEzNzY1ZDQ1Y2I2ODJhODdlM2I2NDEyOGJhMjRhMTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIwLTExLTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
aWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2FjaGUgdGhlIE5hdGl2ZUlt
YWdlIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2luZyBpdCB3aXRoIGl0cyBSZW1v
dGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoKSB3aWxsIGVuc3VyZSB0aGUg
TmF0aXZlSW1hZ2UgaXMgY2FjaGVkIGJlZm9yZQorICAgICAgICByZWNvcmRpbmcgdGhlIERyYXdO
YXRpdmVJbWFnZSBpdGVtIHdpdGggdGhlIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci4KKwor
ICAgICAgICBCZWNhdXNlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgaXMgYSBzdXBlcmNsYXNzIG9m
IERpc3BsYXlMaXN0OjpSZWNvcmRlcjo6CisgICAgICAgIERlbGVnYXRlLCBpdCB3aWxsIGVuc3Vy
ZSB0aGUgTmF0aXZlSW1hZ2UgaXMgY2FjaGVkIGluIGl0cyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuCisKKyAgICAgICAgSWYgdGhlIE5hdGl2ZUltYWdlIGlzIHJlZ2lzdGVyZWQgaW4gUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5IGZvciB0aGUgZmlyc3QKKyAgICAgICAgdGltZSwgaXQgaXMgZ29p
bmcgdG8gYmUgc2VudCBhcyBhbiBJUEMgbWVzc2FnZSB0byBHUFUuIFVwb24gcmVjZWl2aW5nIHRo
aXMKKyAgICAgICAgbWVzc2FnZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3aWxsIGNhY2hlIHRo
aXMgTmF0aXZlSW1hZ2UgaW4gaXRzCisgICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGUuIFRoaXMg
bWVzc2FnZSBoYXMgdG8gYmUgcmVjZWl2ZWQgZm9yIGFueSBOYXRpdmVJbWFnZQorICAgICAgICBv
bmx5IG9uY2UgZm9yIGl0cyBlbnRpcmUgbGlmZSB0aW1lLgorCisgICAgICAgIFdoZW4gZmx1c2hp
bmcgdGhlIERpc3BsYXlMaXN0IG9mIGFueSBJbWFnZUJ1ZmZlciwgUmVtb3RlSW1hZ2VCdWZmZXIg
d2lsbAorICAgICAgICBlbnN1cmUgdGhlIE5hdGl2ZUltYWdlcyBjYWNoZWQgaW4gdGhlIFJlbW90
ZVJlc291cmNlQ2FjaGUgYXJlIHBhc3NlZCB0bworICAgICAgICBEaXNwbGF5TGlzdDo6UmVwbGF5
ZXIgc28gaXQgY2FuIHVzZSB0aGVtIHRvIGdldCBOYXRpdmVJbWFnZSBmb3IgZXZlcnkKKyAgICAg
ICAgRHJhd05hdGl2ZUltYWdlIHdpdGggdGhlIHNhbWUgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGl0IHdhcyByZWNvcmRlZAorICAgICAgICB3aXRoLgorCisgICAgICAgIFdoZW4gTmF0aXZl
SW1hZ2UgaXMgYmluZyBkZXN0cm95ZWQsIGl0cyBkZXN0cnVjdG9yIHdpbGwgY2FsbCBpdHMgb2Jz
ZXJ2ZXIKKyAgICAgICAgdmlydHVhbCBtZXRob2QgbmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKCku
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB3aWxsCisgICAgICAgIGJlIGEgc3VwZXJjbGFzcyBO
YXRpdmVJbWFnZTo6T2JzZXJ2ZXIgc28gaXRzIG92ZXJyaWRpbmcgbWV0aG9kIHdpbGwgYmUKKyAg
ICAgICAgY2FsbGVkLiBXaGVuIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bmF0aXZlSW1hZ2VX
aWxsQmVEZWxldGVkKCkgaXMgY2FsbGVkCisgICAgICAgIGl0IGlzIGdvaW5nIHRvIGRlbGV0ZSB0
aGUgTmF0aXZlSW1hZ2UgZnJvbSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgYW5kCisgICAgICAg
IGlzIGdvaW5nIHRvIHNlbmQgYSBtZXNzYWdlIHRvIGRlbGV0ZSB0aGUgY29ycmVzcG9uZGluZyBO
YXRpdmVJbWFnZSBmcm9tCisgICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGUuICAgICAgICAKKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpuYXRpdmVJ
bWFnZXMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpj
YWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6bmF0aXZlSW1h
Z2VXaWxsQmVEZWxldGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaDoKKwogMjAyMC0xMS0xMCAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY0NhdGFseXN0XSBBZGQgZW50aXRsZW1l
bnQgZm9yIG1lc3NhZ2UgZmlsdGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmI4MjQ4NmZiOTRlNjVjNzk1YTY3Nzc2NmFk
ZjEzNDE4ZjlmZTczZi4uOGRmZDE5YzZjZTcyNjBkNzY1ZmM1MzA5OWY5ZDcwMjU5MmE0YzhiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjE2NSw2ICsyMTY1LDcgQEAKIAkJNzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJl
bmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5RDA1MzAyNTMxNDI0
MzAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4
IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBB
bmltYXRpb25GcmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkFC
OUEyMTI1NUE5RkRFMDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUI5QTFGMjU1QTlFQTYwMEU2
RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFn
ZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZF
ODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4
MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMw
MDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQu
aCAqLzsgfTsKQEAgLTk5NzEsNiArOTk3Miw3IEBACiAJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4
MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFscGhhUHJlbXVs
dGlwbGljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjYyM0Q2
ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5n
TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjlEMDUyRTI1MzEzRTI2MDA0
MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNTIzRTE3MzI4MDA4
RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUltYWdlQnVmZmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjQwOCw2ICsyNjQxMCw3IEBACiAJCQkJMzE0QkUz
QTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovLAogCQkJ
CTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5jcHAgKi8sCiAJCQkJNTVB
MzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5hdGl2ZUltYWdlLmggKi8sCisJCQkJNzJBQjlBMUYy
NTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggKi8sCiAJCQkJQjI3NTM1
NTIwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguY3BwICovLAogCQkJCUIyNzUzNTUzMEIwNTM4MTQw
MDJDRTY0RiAvKiBQYXRoLmggKi8sCiAJCQkJQTg4REQ0ODgwQjQ2MjlCMDAwQzAyOTkwIC8qIFBh
dGhUcmF2ZXJzYWxTdGF0ZS5jcHAgKi8sCkBAIC0zMzQzOCw2ICszMzQ0MSw3IEBACiAJCQkJQTgx
ODcyMjMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTgxODcyMUUwOTc3RDNDMDAwNTgyNkQ5IC8qIE5hbWVOb2RlTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MkFCOUEyMTI1NUE5RkRFMDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZl
cmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBO
YXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAz
RUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0ND
RjAyNzBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAppbmRleCAwMjU4ZDY0MWQ3NjRiOTlhYjFjZDhjZGY5NDI5OGQwZGRmODdiMTQ1Li4z
ZmVlODU5ODMyYTdjMDE0MWEwNzkwMWZhOTU0MjhiZGU1MmExYmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTc2
MCw5ICs3NjAsNiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbgogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAK
LSAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2Us
IGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwotCiAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRp
b25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwogICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KQEAgLTc3Miw5ICs3NjksNiBAQCBJ
bWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBs
KQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwotCiAgICAgSW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0
aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwogICAgIHJldHVybiBpbWFnZS5k
cmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBv
cHRpb25zKTsKIH0KQEAgLTc4NSw5ICs3NzksNiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1
bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBs
LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIG9wdGlvbnMpOwotCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpT
dHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8g
SnVzdCBkbyBhIHNjYWxlLgogICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmNwcAppbmRleCAzZjEzZGNhYjM1YWM4YzVhOTgxZGRkOWEzMjA4
ODg4NGZkNGFhMjUzLi43MGRmZmRmOTI0MzY0YjU0YjFkNjljYWYyMzBjNzcwZmZlY2VmZWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3Bw
CkBAIC00Miw0ICs0MiwxMCBAQCBOYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFn
ZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCiB7CiB9CiAKK05hdGl2ZUltYWdlOjp+TmF0aXZlSW1hZ2Uo
KQoreworICAgIGlmIChtX29ic2VydmVyKQorICAgICAgICBtX29ic2VydmVyLT5uYXRpdmVJbWFn
ZVdpbGxCZURlbGV0ZWQobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuaAppbmRleCBkMDYyYjk3ZmQ0NDRmMGNlYWEyMmJkZDgzOTAwODhjMzMyMDJj
MjUyLi5hODM3OGEzYzIyZGNjNWQwYzgxMzZlOTExMWY2NDJlNWE1NTAwZTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTMwLDYgKzMw
LDggQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybUltYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywyMCArMzksMzcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFn
ZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIGNsYXNzIE9i
c2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZh
dWx0OworICAgICAgICB2aXJ0dWFsIHZvaWQgbmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikgPSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2Jz
ZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgfTsKKwogICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYpOwogCisgICAgV0VC
Q09SRV9FWFBPUlQgfk5hdGl2ZUltYWdlKCk7CisKICAgICBjb25zdCBQbGF0Zm9ybUltYWdlUHRy
JiBwbGF0Zm9ybUltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUltYWdlOyB9CisgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBJbnRTaXplIHNpemUoKSBjb25zdDsKICAgICBib29sIGhhc0FscGhhKCkg
Y29uc3Q7CiAgICAgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Q7CiAKKyAgICB2
b2lkIHNldFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSB7IG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyID0gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRP
YnNlcnZlcihPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlciA9IG9ic2VydmVyOyB9CiAg
ICAgdm9pZCBjbGVhclN1YmltYWdlcygpOwogCiBwcml2YXRlOgogICAgIE5hdGl2ZUltYWdlKFBs
YXRmb3JtSW1hZ2VQdHImJik7CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIG1fcGxhdGZvcm1JbWFn
ZTsKKyAgICBPYnNlcnZlciogbV9vYnNlcnZlciB7IG51bGxwdHIgfTsKKyAgICBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgeyBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKIH07CiAKK3VzaW5nIE5hdGl2ZUlt
YWdlSGFzaE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8TmF0
aXZlSW1hZ2U+PjsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDQ5ZjNiMWFmZTUzOTBhOWY5YTRhMmJiMzk2NTE4NzljZGZiZjE0MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVm
ZXJlbmNlLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgTmF0aXZlSW1hZ2VSZWZlcmVuY2UgPSBS
ZWY8TmF0aXZlSW1hZ2U+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmNwcAppbmRleCBmNTA2ZGRmNDk1Mjc1ZGJiNWMwOTAyOGM2MWE0OTM3YTljODc1OTRj
Li40NjhhM2Q1NTQ1NjJhOTY3NjM1ZGMxYjc2OTlmYTI1NjZmNGNhODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5jcHAKQEAgLTUyLDYgKzUyLDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcCgp
IGNvbnN0CiAKIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdChEaXNwbGF5TGlzdCYmIG90aGVyKQog
ICAgIDogbV9pbWFnZUJ1ZmZlcnMoc3RkOjpleGNoYW5nZShvdGhlci5tX2ltYWdlQnVmZmVycywg
eyB9KSkKKyAgICAsIG1fbmF0aXZlSW1hZ2VzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9uYXRpdmVJ
bWFnZXMsIHsgfSkpCiAgICAgLCBtX2l0ZW1zKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pdGVtcywg
bnVsbHB0cikpCiAgICAgLCBtX2RyYXdpbmdJdGVtRXh0ZW50cyhzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzLCB7IH0pKQogewpAQCAtNjgsNiArNjksNyBAQCBEaXNwbGF5
TGlzdDo6fkRpc3BsYXlMaXN0KCkgPSBkZWZhdWx0OwogRGlzcGxheUxpc3QmIERpc3BsYXlMaXN0
OjpvcGVyYXRvcj0oRGlzcGxheUxpc3QmJiBvdGhlcikKIHsKICAgICBtX2ltYWdlQnVmZmVycyA9
IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pbWFnZUJ1ZmZlcnMsIHsgfSk7CisgICAgbV9uYXRpdmVJ
bWFnZXMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fbmF0aXZlSW1hZ2VzLCB7IH0pOwogICAgIG1f
aXRlbXMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faXRlbXMsIG51bGxwdHIpOwogICAgIG1fZHJh
d2luZ0l0ZW1FeHRlbnRzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2RyYXdpbmdJdGVtRXh0ZW50
cywgeyB9KTsKICAgICByZXR1cm4gKnRoaXM7CkBAIC03OSw2ICs4MSw3IEBAIHZvaWQgRGlzcGxh
eUxpc3Q6OmNsZWFyKCkKICAgICAgICAgbV9pdGVtcy0+Y2xlYXIoKTsKICAgICBtX2RyYXdpbmdJ
dGVtRXh0ZW50cy5jbGVhcigpOwogICAgIG1faW1hZ2VCdWZmZXJzLmNsZWFyKCk7CisgICAgbV9u
YXRpdmVJbWFnZXMuY2xlYXIoKTsKIH0KIAogYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZv
ckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5oCmluZGV4IDM2OGM3ODA4NzNjYzRlMDQ5ZTAwMWFmMTRmNWE2YTJiZmU0ZGVkNmUuLjE3
NDk5YzdmNjc1NWNiOTliOGU1NDIyNjExMDg1MDE0N2FkYjhiODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5oCkBAIC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgYXNUZXh0KEFzVGV4
dEZsYWdzKSBjb25zdDsKIAogICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZm
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KKyAgICBjb25zdCBOYXRpdmVJ
bWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2Vz
OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1
ZmZlclJlYWRpbmdDbGllbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZm
ZXJDbGllbnQoSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQqKTsKQEAgLTE1OCw5ICsxNTksMTUgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9pbWFnZUJ1ZmZlcnMuYWRkKGltYWdlQnVmZmVyLT5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwogICAgIH0KIAor
ICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCisgICAg
eworICAgICAgICBtX25hdGl2ZUltYWdlcy5hZGQoaW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyBib29s
IHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywgSXRlbUhhbmRsZSk7CiAKICAgICBJbWFn
ZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1f
bmF0aXZlSW1hZ2VzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwog
ICAgIFZlY3RvcjxPcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAg
ICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBjN2Y4YWM4NTgwOTJhMjYwODJl
ODVjYjhlZGQyNzM0OTY1M2Q0Yzg1Li5lYzJkNmVhNTUwOGEyMjA4NTI5N2E1NWJjNWMxNzM4MDBj
NWE1YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApA
QCAtMzMwLDEwICszMzAsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICBn
ZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKS5+RHJhd0xpbmVzRm9yVGV4dCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogewotICAgICAg
ICBnZXQ8RHJhd05hdGl2ZUltYWdlPigpLn5EcmF3TmF0aXZlSW1hZ2UoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDogewogICAgICAgICBnZXQ8
RHJhd1BhdGg+KCkufkRyYXdQYXRoKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ0MCw2ICs0MzYs
MTAgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0ltYWdlQnVmZmVyPjo6dmFsdWUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFn
ZTogeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxEcmF3TmF0aXZlSW1hZ2U+Ojp2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0xpbmU+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBjOThmODQ4
MzBlMDEwYWFlZWVjMmZjMmU4MTNkODBjY2JiNzRmNjkxLi5hMWFkNDYwMWE2ZDkyMmRjOTc4MDA4
NGM4MzQxMGZkNWM1ZWVhYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwCkBAIC0yNjAsNyArMjYwLDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlw
ZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdJbWFnZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
VGlsZWRJbWFnZToKQEAgLTI5MCw2ICsyODksNyBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlw
ZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyOgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TGluZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKICAgICBj
YXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcAppbmRleCBjN2VkZDc1OGQ5OGZlMTkyN2FjNTIzNjU0ZTFkZjQ2OTM4YTBm
MjdkLi42MTUzMWZiOTI1OTQ2NmQwMDAxN2QyZWU2MzRlMzBjMmQ5MWJmYWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC00NjMsMTggKzQ2MywxNCBAQCBzdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVm
ZmVyJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0KIAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKLSAgICA6IG1faW1hZ2UoaW1hZ2UpCi0g
ICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCi0gICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0
UmVjdCkKLSAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQotICAgICwgbV9vcHRpb25zKG9wdGlvbnMp
CitOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
dm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKK3ZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IE5hdGl2ZUltYWdlJiBpbWFnZSkgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9v
cHRpb25zKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgbV9pbWFnZVNpemUs
IG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1h
Z2UmIGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBhODYxMWM3NjFm
MWRhMzg1NmJlNDMyMTM2ZjQxZTcyZDE4NTdlNGU5Li4xZTRlMDFkMzllNzU4YmE5OTlmNjlhNDYx
M2M2ZTRmOGJiYzQ0NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEy
NzQsNzEgKzEyNzQsMzYgQEAgcHJpdmF0ZToKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpE
cmF3TmF0aXZlSW1hZ2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9
IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gdHJ1ZTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6
ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAgICBEcmF3TmF0aXZlSW1h
Z2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCisgICAgICAgIDogbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKKyAg
ICAgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKKyAgICAgICAgLCBtX3NyY1JlY3Qo
c3JjUmVjdCkKKyAgICAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKKyAgICB7CisgICAgfQogCisg
ICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CiAgICAg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAg
ICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
dGluYXRpb25SZWN0OyB9CiAKLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
OworICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Q7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSYp
IGNvbnN0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25S
ZWN0OyB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERy
YXdOYXRpdmVJbWFnZT4gZGVjb2RlKERlY29kZXImKTsKLQogcHJpdmF0ZToKLSAgICBSZWY8TmF0
aXZlSW1hZ2U+IG1faW1hZ2U7CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAg
ICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsK
ICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7CiB9OwogCi10ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgotdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9pbWFnZTsKLSAgICBlbmNvZGVyIDw8IG1faW1h
Z2VTaXplOwotICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7Ci0gICAgZW5jb2RlciA8
PCBtX3NyY1JlY3Q7Ci0gICAgZW5jb2RlciA8PCBtX29wdGlvbnM7Ci19Ci0KLXRlbXBsYXRlPGNs
YXNzIERlY29kZXI+Ci1PcHRpb25hbDxEcmF3TmF0aXZlSW1hZ2U+IERyYXdOYXRpdmVJbWFnZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdl
Pj4gaW1hZ2U7Ci0gICAgZGVjb2RlciA+PiBpbWFnZTsKLSAgICBpZiAoIWltYWdlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBpbWFnZVNp
emU7Ci0gICAgZGVjb2RlciA+PiBpbWFnZVNpemU7Ci0gICAgaWYgKCFpbWFnZVNpemUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3Rp
bmF0aW9uUmVjdDsKLSAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uUmVjdDsKLSAgICBpZiAoIWRl
c3RpbmF0aW9uUmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gc3JjUmVjdDsKLSAgICBkZWNvZGVyID4+IHNyY1JlY3Q7Ci0gICAgaWYg
KCFzcmNSZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8
SW1hZ2VQYWludGluZ09wdGlvbnM+IG9wdGlvbnM7Ci0gICAgZGVjb2RlciA+PiBvcHRpb25zOwot
ICAgIGlmICghb3B0aW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJl
dHVybiB7eyAqaW1hZ2UsICppbWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAq
b3B0aW9ucyB9fTsKLX0KLQogY2xhc3MgRHJhd1BhdHRlcm4gewogcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RHJhd1BhdHRlcm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYmYzY2IzNDAxNDFk
M2VmN2EwMTZlNGU5ZWVjNTdjYWVlYWRkYWNhOC4uZTg4NmQxYTQ0ODM0YmY5NDAxMjgzNTMzOTY4
MDUxZDRhODE5ZGU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cApAQCAtMTg3LDE0ICsxODcsMTkgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGls
ZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXQKIAogdm9pZCBS
ZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBpbWFnZUJ1ZmZlci5m
bHVzaERyYXdpbmdDb250ZXh0KCk7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVy
KG1ha2VSZWYoaW1hZ2VCdWZmZXIpKTsKKyAgICAvLyBGSVhNRTogQ2FsbCBpbWFnZUJ1ZmZlci5m
bHVzaERyYXdpbmdDb250ZXh0KCkgd2hlbiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjE4NzczPiBp
cyBmaXhlZC4KKyAgICBpZiAoIW1fZGVsZWdhdGUpCisgICAgICAgIG1fZGlzcGxheUxpc3QuY2Fj
aGVJbWFnZUJ1ZmZlcihtYWtlUmVmKGltYWdlQnVmZmVyKSk7CiAgICAgYXBwZW5kPERyYXdJbWFn
ZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXBwZW5kPERyYXdOYXRpdmVJbWFn
ZT4oaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlm
ICghbV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGlt
YWdlKTsKKyAgICBlbHNlCisgICAgICAgIG1fZGVsZWdhdGUtPmNhY2hlTmF0aXZlSW1hZ2UoaW1h
Z2UpOworICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0K
IAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTY1OTZiZTgyMmJlNzlj
MWVmYWMzZTgxMTczYzNhMjM0MGU3OWMxOS4uZmZhMWZlMzgxZDZjMjQzZDZjMzUwN2YyODk3ZTEz
OWY1ZjI4ZTcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02
Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpIHsgfQogICAg
IH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAK
aW5kZXggNWRmMGUwMDU3MDE5N2QxYzRhM2JkYmJlYTM3OTUyZjI4ZGE5MzI1My4uMDZkZGY1YzA3
N2ZkZDY5MjVmM2YwMmJmMWRkNzJkOGU3NTMyOTdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMzQsMTAgKzM0LDExIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0
IEltYWdlQnVmZmVySGFzaE1hcCogaW1hZ2VCdWZmZXJzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCitS
ZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5
TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1hZ2VCdWZmZXJz
LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqIG5hdGl2ZUltYWdlcywgRGVsZWdhdGUqIGRlbGVn
YXRlKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3Bs
YXlMaXN0KQogICAgICwgbV9pbWFnZUJ1ZmZlcnMoaW1hZ2VCdWZmZXJzID8gKmltYWdlQnVmZmVy
cyA6IG1fZGlzcGxheUxpc3QuaW1hZ2VCdWZmZXJzKCkpCisgICAgLCBtX25hdGl2ZUltYWdlcyhu
YXRpdmVJbWFnZXMgPyAqbmF0aXZlSW1hZ2VzIDogbV9kaXNwbGF5TGlzdC5uYXRpdmVJbWFnZXMo
KSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9CkBAIC01NSw2ICs1NiwxMyBAQCB2
b2lkIFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICAgICAgZHJh
d0l0ZW0uYXBwbHkobV9jb250ZXh0LCAqaW1hZ2VCdWZmZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIAorICAgIGlmIChpdGVtLmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgeworICAgICAg
ICBhdXRvJiBkcmF3SXRlbSA9IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKKyAgICAgICAg
aWYgKGF1dG8qIGltYWdlID0gbV9uYXRpdmVJbWFnZXMuZ2V0KGRyYXdJdGVtLnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGRyYXdJdGVtLmFwcGx5KG1fY29udGV4
dCwgKmltYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGl0ZW0uYXBwbHkobV9j
b250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4IDky
ZWM2ODg5YzM1ZWY4NmQzZjllOTRiZWM2NjZlN2E3OGFlNTk3Y2YuLjJjMDE5ZWUwY2M4YTM2ZTJj
NGY1ZDI1MzAyMDBmODc1ZDE2YWRlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZXBsYXllciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVwbGF5ZXIpOwogcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlM
aXN0JiwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51
bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IERpc3BsYXlMaXN0JiwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiA9IG51bGxwdHIsIGNv
bnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+UmVwbGF5ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlh
bENsaXAgPSB7IH0sIGJvb2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOwpAQCAtNTksNiArNTks
NyBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIGNvbnN0
IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwogICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCYgbV9pbWFnZUJ1ZmZlcnM7CisgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBtX25hdGl2
ZUltYWdlczsKICAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXgg
NjRiMWU2YmRhZTVlY2JmNjMwOGViNzM1NGIzMTQzOTg5MTM3MTIyNS4uMjFlYmFkNjE5MGVmYmM4
ZjlmNTI4ODkzNzU1NzI1YTA0NTU5Yzc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTY5LDcgKzY5LDggQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmICghZGlzcGxheUxpc3QuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpOwotICAgICAgICAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1h
Z2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsIHRoaXMgfTsK
KyAgICAgICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7CisgICAgICAgICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2
ZUltYWdlcywgdGhpcyB9OwogICAgICAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggZDIzN2E2M2I4ODY5NjQyMWJi
OWEyNTdlZjlkYjIxN2NmZTlmOWNmOC4uZGJhYjAxYWQzYzA1ZGVkZGIzM2FmZjcxNmEyMjY5NGIy
MzlkMTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMTcyLDYgKzE3MiwxMSBAQCB2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEZvcm1hdCwgSQogICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1hZ2VE
YXRhUmVmZXJlbmNlKFdURk1vdmUoaW1hZ2VEYXRhKSkpOwogfQogCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQor
eworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKFdURk1vdmUoaW1h
Z2UpKTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVz
b3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKIHsKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNl
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC0yMDIsOCArMjA3LDYgQEAgT3B0aW9u
YWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkZWMKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5
TGlzdDo6RHJhd0ltYWdlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKICAgICAgICAgcmV0dXJu
IGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oZGF0YSwgbGVu
Z3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6RHJhd05hdGl2ZUltYWdlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGg6CiAgICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxv
Y2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46CkBA
IC0yNDYsNiArMjQ5LDcgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5f
VU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWMKICAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKICAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0VsbGlwc2U6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
TGluZToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKaW5kZXggN2FjOTYyMDEwM2U1N2MwN2JiMmVlZTMzZWJlZmIyYzQ1ZjAwN2RkMS4u
NDE1OTA0ZDY3NzNlMDE4MmFhYjliMTFhMjBkZGUzZWM1ZWZiZjAwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgSXRlbTsK
IH0KIGNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIE5hdGl2ZUltYWdlOwogZW51bSBjbGFzcyBDb2xv
clNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiB9CkBA
IC0xMDUsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNv
bnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUmLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZ2V0
SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBX
ZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4m
Jik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4m
Jik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZVNoYXJlZEl0ZW1EYXRhKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpp
bmRleCBmNTViMDI2YmRiNWU2M2ExNGNmMzYyMTRhODNlOGJiZTg4NjMxYTFiLi42ZGRiZWFjZDYy
OGM3NzFkNGZiZDg3MjU2OTJlOTVjZjEyYzkyOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5tZXNzYWdlcy5pbgpAQCAtMjcsNiArMjcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50ZWQgewogICAgIFN1Ym1pdERpc3BsYXlMaXN0KFdlYktp
dDo6U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRmx1
c2hEaXNwbGF5TGlzdEFuZENvbW1pdChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRp
c3BsYXlMaXN0LCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNy
Y1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIC0+IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5
bmNocm9ub3VzCisgICAgQ2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVy
ZW5jZSBuYXRpdmVJbWFnZSkKICAgICBEaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggNWUwYTY3NDI3NjRkZmQ0MjBhZWJhZWJi
OThlMmQxMGRhYjU1NDlkNC4uYzMzMmQyZjcwNGUxNTg0ZDZjMGU1Y2ZiZGI3ZWQ1NmRjNGIyYzM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtNDIsMTAgKzQyLDE4IEBAIEltYWdlQnVmZmVyKiBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJ
bWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBt
X25hdGl2ZUltYWdlcy5hZGQoaW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBX
VEZNb3ZlKGltYWdlKSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKK30KKwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIHsKICAgICBpZiAobV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9uYXRpdmVJbWFnZXMu
cmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKICAg
ICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVm
b3JlIHJlbGVhc2luZyBpdC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5oCmluZGV4IGE0ZTQyODY2OTI3OWYxZWFmOWQzZTg1MjU1MmI0MjQ0NDk5YTQ5YjQuLmM1ZGRl
NjgxYjliYWI0MzdkZDI3Y2U3YmVhZjZlNTlhYzllYjI4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAt
NDQsMTIgKzQ0LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNo
ZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOwogICAg
IHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgCiAgICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBp
bWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQorICAgIGNvbnN0
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1
cm4gbV9uYXRpdmVJbWFnZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFw
IG1fbmF0aXZlSW1hZ2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBkYmE1YjI0MjkwMDVmMmFhZWIwY2I4
MTM4ZTk4N2IyZDE0MmY4OGE3Li5hMTdhZTlmZWZiOTI5MGExNzAyODMwMDAyODI0YmI2MWY4YTNk
MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxOCw3
ICsyMTgsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgog
ICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpOYXRpdmVJ
bWFnZScsCisgICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVyZW5jZScsCiAgICAgICAg
ICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAxNTcxM2Q1Y2U5
MmQyOWMxNDkzNzc1YzIzZWIxY2RlZDY2YzdkYjllLi5kMDUyZTdmNjdkOWE0OTQ1NmI2MWI2NWZl
Yjc0N2U1NjczNjMxYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKQEAgLTExMTUsNiArMTExNSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxOYXRp
dmVJCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJpdG1hcC0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSk7CiAKKyAgICBlbmNvZGVyIDw8IGltYWdlLT5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKTsKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIApAQCAtMTEyNSw2
ICsxMTI2LDExIEBAIE9wdGlvbmFsPFJlZjxOYXRpdmVJbWFnZT4+IEFyZ3VtZW50Q29kZXI8UmVm
PE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvCiAgICAgaWYgKCFkaWRDcmVhdGVH
cmFwaGljc0NvbnRleHQuaGFzVmFsdWUoKSB8fCAhZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0LnZh
bHVlKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKworICAgIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRs
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CkBAIC0xMTQxLDYgKzExNDcsNyBAQCBPcHRpb25hbDxSZWY8TmF0aXZlSW1hZ2U+
PiBBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUoRGVjb2RlciYgZGVjbwog
ICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAg
ICBuYXRpdmVJbWFnZS0+c2V0UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgcmV0dXJuIG1ha2VSZWYoKm5hdGl2ZUltYWdlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCA1OTg1N2ZmMDdhNWFjMmY0YjMyYzU2
NjMyNTE0YjQ1ZGUxMDE5N2I4Li43MTFmNTUxZTU1NDNiODU4YzkxODFhMjI4M2JmOTA4YTdkYjI2
N2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTc4LDYgKzE3OCwxMiBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIHN1Ym1pdERpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KTsKICAgICAg
ICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKICAgICB9CisgICAgCisgICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiBpbWFnZSkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICB9
CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVt
QnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgb3ZlcnJpZGUKICAgICB7CkBAIC0yMDcsOCArMjEzLDYg
QEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2lu
Z2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2U+KGl0ZW0uZ2V0PFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2U+KCkpOwogICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKICAgICAgICAgICAgIHJldHVy
biBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0xpbmVzRm9yVGV4dD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5l
c0ZvclRleHQ+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5j
b2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U+KGl0
ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U+KCkpOwogICAgICAg
ICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGg6CiAgICAgICAg
ICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdQYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1Bh
dGg+KCkpOwogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d1BhdHRlcm46CkBAIC0yNTEsNiArMjU1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoK
ICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNl
OgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdl
QnVmZmVyOgorICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0xpbmU6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3UmVjdDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkVuZFRyYW5zcGFyZW5jeUxheWVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCmluZGV4IDhkODYxNWI4YTk2Yzc0NDcwYjA5NDM3ZDhjZDdjN2ExNjViYzY1ZGEuLmY4
NmUwMjViNTBlOTgyYmY0MzQwYmM1MWFhNTQ4YzJkOGViZDgyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaQogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJl
bmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgaW1hZ2VCdWZmZXItPnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7Ci0gICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlSW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5n
ZXQoKSk7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlSW1hZ2VCdWZm
ZXIobWFrZVJlZigqaW1hZ2VCdWZmZXIpKTsKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwog
ICAgIH0KIApAQCAtMTI5LDYgKzEyOSwxMyBAQCBEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVy
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZENvbQogICAg
IHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UpCit7CisgICAg
aWYgKCFtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKSkK
KyAgICAgICAgcmV0dXJuOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OkNhY2hlTmF0aXZlSW1hZ2UobWFrZVJlZihpbWFnZSkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVh
c2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogewogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LnJlbGVh
c2VJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggYTU0MmM4MzM1ZTBlNTMzZTA1MTNlNTc2NDI2
MjQ1ZWJiNzY0MWNmOS4uYzFlN2Y1NGYxNjdhMDI0MjdmMTM5ZTVjMjQ5MDJlZGI2NWYzYWM0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC03NCw2ICs3NCw3IEBA
IHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFu
ZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFn
ZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNl
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBib29sIHdhaXRG
b3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CkBAIC04Niw3ICs4Nyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKIAotICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTsKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkgeyAqdGhpcyB9OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pj4gbV9zaGFyZWRJdGVtQnVmZmVy
czsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIHsgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggZmFmZjkyYTA0ZGRmY2JiZDU4
Mzg2ZWM5YmZhYWQ5ZTEzNTVhNTU2Zi4uZjQ2YTNkZDhjMTQ4OTQ3N2M1OTU2ODhkODNlYTEwNjg2
M2E1YTAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtMjksMTQg
KzI5LDE4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1
ZmZlciogaW1hZ2VCdWZmZXIpCitSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW1hZ2VC
dWZmZXJzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGltYWdlQnVmZmVyKTsKK30K
Kwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlSW1hZ2VCdWZmZXIoUmVmPFdl
YkNvcmU6OkltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9pbWFnZUJ1ZmZlcnMuYWRkKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoKSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKQEAgLTQ1LDEyICs0OSwzMCBAQCBJbWFn
ZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZWRJbWFnZUJ1ZmZlcihSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aQogICAgIHJldHVybiBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAorYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQoreworICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9uYXRpdmVJbWFnZXMuZW5zdXJlKGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpLCBbJl0oKSB7CisgICAgICAgIGltYWdlLnNldE9ic2VydmVyKHRoaXMpOworICAg
ICAgICByZXR1cm4gbWFrZVJlZihpbWFnZSk7CisgICAgfSk7CisgICAgcmV0dXJuIGFkZFJlc3Vs
dC5pc05ld0VudHJ5OworfQorCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFz
ZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCiB7CiAgICAgYm9vbCBmb3VuZCA9IG1faW1hZ2VCdWZmZXJzLnJlbW92ZShy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZv
dW5kKTsKIH0KIAordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6Om5hdGl2ZUltYWdlV2ls
bEJlRGVsZXRlZChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQoreworICAgIGlmICghbV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRlbGwgdGhlIEdQ
VSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShH
UFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCmluZGV4IGJkZTgxNWEx
M2MxZDk1MWQ1MjA0OTM2OGE4NWM4YzQwY2ExNGRjZjMuLjdmZTBmOGY3MjhmY2QzZDg4NWNkNGQ3
MzZiNGE3NTIwNjU5NTVhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAt
MjcsMjcgKzI3LDMyIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlIDxX
ZWJDb3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW1hZ2VCdWZm
ZXI7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkgeworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworCitjbGFzcyBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6TmF0aXZlSW1hZ2U6Ok9ic2Vy
dmVyIHsKIHB1YmxpYzoKLSAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKSA9IGRlZmF1bHQ7
CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSYpOwogCi0gICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKTsKKyAgICB2b2lkIGNhY2hlSW1h
Z2VCdWZmZXIoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKICAgICBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogCisgICAgYm9vbCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlJik7CisgICAgdm9pZCByZWxlYXNlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKLSAgICB1c2luZyBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5SGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlcio+OworICAgIHZvaWQgbmF0aXZlSW1h
Z2VXaWxsQmVEZWxldGVkKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3Zl
cnJpZGU7CiAKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5SGFzaE1hcCBtX2ltYWdlQnVmZmVy
czsKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAg
V2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOworICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="commit-queue"
          id="430408"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413742</attachid>
            <date>2020-11-10 14:34:25 -0800</date>
            <delta_ts>2020-11-10 15:58:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201110143424.patch</filename>
            <type>text/plain</type>
            <size>52165</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTljYzBhYmM0MDE2MjI2
NDhiNDc1YWY5MzMzNjc1ZGJhM2E5ZTI4ZC4uMWY4M2UyNmUyZDJmZjI0YzEwNDg5Yjc0YzE5NWZl
YjMzNTljMzk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTExLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2lu
ZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggYWxsIHRoZSBkcmF3
SW1hZ2UgZnVuY3Rpb25zIHdpbGwgbm90IGJlIHJlY29yZGVkIGFzIGRpc3BsYXkKKyAgICAgICAg
bGlzdCBpdGVtcy4gSW5zdGVhZCB3ZSBhcmUgZ29pbmcgdG8gbGV0IHRoZW0gcHJvY2VlZCB0aWxs
IHRoZXkgcmVhY2ggbG93ZXIKKyAgICAgICAgbGV2ZWwgY2FsbHMgc3VjaCBhcyBkcmF3TmF0aXZl
SW1hZ2UoKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UpOgorICAgICAgICBXZSBoYXZlIHRvIGxldCB0aGVzZSBmdW5jdGlvbiBwcm9jZWVkIHRp
bGwgdGhleSBlbmQgdXAgY2FsbGluZyB0aGUgCisgICAgICAgIERPTSByZW5kZXJpbmcgZm9yIFNW
R0ltYWdlLCBQREZEb2N1bWVudEltYWdlOjpkcmF3IGZvciBwZGYgaW1hZ2UgYW5kIAorICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UgZm9yIHRoZSByZXN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6On5O
YXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNldFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2V0T2Jz
ZXJ2ZXIpOgorICAgICAgICBBZGQgYW4gb2JzZXJ2ZXIgdG8gTmF0aXZlSW1hZ2Ugd2hvc2Ugam9i
IGlzIHRvIG9ic2VydmUgd2hlbiBpdCBpcyBiZWluZworICAgICAgICBkZXN0cm95ZWQuIEFkZCBh
bHNvIGFuIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBzbyBpdCBjYW4gYmUgdXNlZCB0bwor
ICAgICAgICByZWZlcmVuY2UgdGhlIE5hdGl2ZUltYWdlIGluIGEgTmF0aXZlSW1hZ2VIYXNoTWFw
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaDog
QWRkZWQuCisgICAgICAgIFRoaXMgZGVmaW5pdGlvbiBjYW4gYmUgdXNlZCB0byBlbmNvZGUvZGVj
b2RlIGEgUmVmPE5hdGl2ZUltYWdlPiBmb3IgSVBDCisgICAgICAgIG1lc3NhZ2VzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjptX25hdGl2ZUltYWdlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6bmF0aXZlSW1hZ2VzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVOYXRpdmVJbWFnZSk6
CisgICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBjYWNoZSB0aGUgTmF0aXZlSW1hZ2UgaW4gRGlz
cGxheUxpc3Qgc3VjaCB0aGF0IGl0cworICAgICAgICByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgY2FuIGJlIHVzZWQgd2hlbiByZWNvcmRpbmcgRHJhd05hdGl2ZUltYWdlCisgICAgICAgIGFu
ZCBtX25hdGl2ZUltYWdlcyBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIE5hdGl2ZUltYWdlIHdo
ZW4gcmVwbGF5aW5nCisgICAgICAgIGJhY2sgRHJhd05hdGl2ZUltYWdlLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVzdHJveSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzSW5saW5lSXRlbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBw
bHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFn
ZTo6RHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2
ZUltYWdlOjplbmNvZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgRHJhd05h
dGl2ZUltYWdlIGlzIGFuIGlubGluZSBpdGVtIG5vdy4gTm8gZW5jb2RpbmcvZGVjb2RpbmcgaXMg
bmVlZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
QXNrIHRoZSBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlIHRvIGNhY2hlIHRoZSBOYXRp
dmVJbWFnZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBs
YXllcjo6UmVwbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVy
OjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgIFJlc29sdmUgdGhlIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBvZiBEcmF3TmF0aXZlSW1hZ2UgdG8gYSBOYXRpdmVJbWFnZQorICAgICAg
ICBmcm9tIHRoZSBtX25hdGl2ZUltYWdlcyBiZWZvcmUgZHJhd2luZyBpdC4KKwogMjAyMC0xMS0x
MCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10g
QWRkIHN1cHBvcnQgZm9yIHJlcGxhY2VkIGVsZW1lbnQgYmFzZWxpbmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTcx
MDM1NDI1ZDIzMWJmMjUwMWM0NTA4YTk5ZjFjYTZkZGY5OTQwNy4uYzQzNDhjNmYxMzc2NWQ0NWNi
NjgyYTg3ZTNiNjQxMjhiYTI0YTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAyMC0x
MS0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIENhY2hlIHRoZSBOYXRpdmVJbWFnZSBpbiBHUFUgUHJvY2VzcyBhbmQgYWxsb3cg
cmVmZXJlbmNpbmcgaXQgd2l0aCBpdHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWNvcmRlcjo6ZHJhd05h
dGl2ZUltYWdlKCkgd2lsbCBlbnN1cmUgdGhlIE5hdGl2ZUltYWdlIGlzIGNhY2hlZCBiZWZvcmUK
KyAgICAgICAgcmVjb3JkaW5nIHRoZSBEcmF3TmF0aXZlSW1hZ2UgaXRlbSB3aXRoIHRoZSByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuCisKKyAgICAgICAgQmVjYXVzZSBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5IGlzIGEgc3VwZXJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OgorICAg
ICAgICBEZWxlZ2F0ZSwgaXQgd2lsbCBlbnN1cmUgdGhlIE5hdGl2ZUltYWdlIGlzIGNhY2hlZCBp
biBpdHMgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LgorCisgICAgICAgIElmIHRoZSBOYXRpdmVJ
bWFnZSBpcyByZWdpc3RlcmVkIGluIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBmb3IgdGhlIGZp
cnN0CisgICAgICAgIHRpbWUsIGl0IGlzIGdvaW5nIHRvIGJlIHNlbnQgYXMgYW4gSVBDIG1lc3Nh
Z2UgdG8gR1BVLiBVcG9uIHJlY2VpdmluZyB0aGlzCisgICAgICAgIG1lc3NhZ2UsIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgd2lsbCBjYWNoZSB0aGlzIE5hdGl2ZUltYWdlIGluIGl0cworICAgICAg
ICBSZW1vdGVSZXNvdXJjZUNhY2hlLiBUaGlzIG1lc3NhZ2UgaGFzIHRvIGJlIHJlY2VpdmVkIGZv
ciBhbnkgTmF0aXZlSW1hZ2UKKyAgICAgICAgb25seSBvbmNlIGZvciBpdHMgZW50aXJlIGxpZmUg
dGltZS4KKworICAgICAgICBXaGVuIGZsdXNoaW5nIHRoZSBEaXNwbGF5TGlzdCBvZiBhbnkgSW1h
Z2VCdWZmZXIsIFJlbW90ZUltYWdlQnVmZmVyIHdpbGwKKyAgICAgICAgZW5zdXJlIHRoZSBOYXRp
dmVJbWFnZXMgY2FjaGVkIGluIHRoZSBSZW1vdGVSZXNvdXJjZUNhY2hlIGFyZSBwYXNzZWQgdG8K
KyAgICAgICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyIHNvIGl0IGNhbiB1c2UgdGhlbSB0byBnZXQg
TmF0aXZlSW1hZ2UgZm9yIGV2ZXJ5CisgICAgICAgIERyYXdOYXRpdmVJbWFnZSB3aXRoIHRoZSBz
YW1lIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpdCB3YXMgcmVjb3JkZWQKKyAgICAgICAg
d2l0aC4KKworICAgICAgICBXaGVuIE5hdGl2ZUltYWdlIGlzIGJpbmcgZGVzdHJveWVkLCBpdHMg
ZGVzdHJ1Y3RvciB3aWxsIGNhbGwgaXRzIG9ic2VydmVyCisgICAgICAgIHZpcnR1YWwgbWV0aG9k
IG5hdGl2ZUltYWdlV2lsbEJlRGVsZXRlZCgpLiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgd2ls
bAorICAgICAgICBiZSBhIHN1cGVyY2xhc3MgTmF0aXZlSW1hZ2U6Ok9ic2VydmVyIHNvIGl0cyBv
dmVycmlkaW5nIG1ldGhvZCB3aWxsIGJlCisgICAgICAgIGNhbGxlZC4gV2hlbiBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk6Om5hdGl2ZUltYWdlV2lsbEJlRGVsZXRlZCgpIGlzIGNhbGxlZAorICAg
ICAgICBpdCBpcyBnb2luZyB0byBkZWxldGUgdGhlIE5hdGl2ZUltYWdlIGZyb20gUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5IGFuZAorICAgICAgICBpcyBnb2luZyB0byBzZW5kIGEgbWVzc2FnZSB0
byBkZWxldGUgdGhlIGNvcnJlc3BvbmRpbmcgTmF0aXZlSW1hZ2UgZnJvbQorICAgICAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlLiAgICAgICAgCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVzb3VyY2VDYWNoZTo6bmF0aXZlSW1hZ2VzIGNvbnN0KToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OmNhY2hlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk6Om5hdGl2ZUltYWdlV2lsbEJlRGVsZXRlZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6CisKIDIw
MjAtMTEtMTAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFttYWNDYXRhbHlzdF0gQWRkIGVudGl0bGVtZW50IGZvciBtZXNzYWdlIGZpbHRlcmluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKaW5kZXggMjQ3MjIzZjhjNGYzMWE3MGJhNGJhYWE0NTkzNTE5ZDI3ZjY0MzM4
My4uYzhjY2Y4ZmZhMTNiNzY4ZTMxYWQ3N2M4ZGI0N2M2N2M5Y2E5MWE1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCkBAIC0xMjE2LDYgKzEyMTYsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5mby5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2UuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJl
bmNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xFU1NoaW1zLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYmI4MjQ4NmZiOTRlNjVjNzk1YTY3Nzc2NmFkZjEzNDE4ZjlmZTczZi4uOGRmZDE5YzZjZTcy
NjBkNzY1ZmM1MzA5OWY5ZDcwMjU5MmE0YzhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE2NSw2ICsyMTY1LDcgQEAKIAkJ
NzI5OUJDNjgyM0Q2QTUzRTAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4
MyAvKiBSZW5kZXJpbmdNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4MTVDMjM4RkQ1MDUw
MEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkFCOUEyMTI1NUE5RkRFMDBFNkVCRjEgLyogTmF0
aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5j
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcy
QkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0E1MjNFMTczMjgwMDhE
NzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmggKi87IH07CiAJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgxMEQw
Q0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgfTsKQEAgLTk5NzEsNiArOTk3Miw3
IEBACiAJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEg
LyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VSZWZl
cmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAw
OEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMg
LyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQbGF0Zm9ybUltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NjQwOCw2ICsyNjQxMCw3IEBACiAJCQkJMzE0QkUzQTUxQjMxMDNGQjAwMTQxOTgyIC8qIE5hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovLAogCQkJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAv
KiBOYXRpdmVJbWFnZS5jcHAgKi8sCiAJCQkJNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5h
dGl2ZUltYWdlLmggKi8sCisJCQkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUlt
YWdlUmVmZXJlbmNlLmggKi8sCiAJCQkJQjI3NTM1NTIwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGgu
Y3BwICovLAogCQkJCUIyNzUzNTUzMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmggKi8sCiAJCQkJ
QTg4REQ0ODgwQjQ2MjlCMDAwQzAyOTkwIC8qIFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgKi8sCkBA
IC0zMzQzOCw2ICszMzQ0MSw3IEBACiAJCQkJQTgxODcyMjMwOTc3RDNDMDAwNTgyNkQ5IC8qIE5h
bWVkTm9kZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUUwOTc3RDNDMDAwNTgyNkQ5
IC8qIE5hbWVOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzI2RDU2RTMyNTNBRTM2NjAw
MDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkFCOUEyMTI1NUE5
RkRFMDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBhdGhOU1Jlc29s
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThFODkgLyogTmF2
aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCAwMjU4ZDY0MWQ3NjRi
OTlhYjFjZDhjZGY5NDI5OGQwZGRmODdiMTQ1Li4zZmVlODU5ODMyYTdjMDE0MWEwNzkwMWZhOTU0
MjhiZGU1MmExYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTc2MCw5ICs3NjAsNiBAQCBJbWFnZURyYXdSZXN1
bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQotICAgICAgICBy
ZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlv
bnMpOwotCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25R
dWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkp
OwogICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRp
b25zKTsKIH0KQEAgLTc3Miw5ICs3NjksNiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6
OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5k
cmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNp
bmcsIG9wdGlvbnMpOwotCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25R
dWFsaXR5KCkpOwogICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KQEAgLTc4NSw5ICs3Nzks
NiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAo
bV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVz
dGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIG9wdGlvbnMp
OwotCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFn
ZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVzdCBkbyBhIHNjYWxlLgogICAgICAgICBy
ZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcAppbmRl
eCAzZjEzZGNhYjM1YWM4YzVhOTgxZGRkOWEzMjA4ODg4NGZkNGFhMjUzLi43MGRmZmRmOTI0MzY0
YjU0YjFkNjljYWYyMzBjNzcwZmZlY2VmZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC00Miw0ICs0MiwxMCBAQCBOYXRpdmVJ
bWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYmIHBsYXRmb3JtSW1hZ2UpCiB7CiB9
CiAKK05hdGl2ZUltYWdlOjp+TmF0aXZlSW1hZ2UoKQoreworICAgIGlmIChtX29ic2VydmVyKQor
ICAgICAgICBtX29ic2VydmVyLT5uYXRpdmVJbWFnZVdpbGxCZURlbGV0ZWQobV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCBkMDYyYjk3
ZmQ0NDRmMGNlYWEyMmJkZDgzOTAwODhjMzMyMDJjMjUyLi5hODM3OGEzYzIyZGNjNWQwYzgxMzZl
OTExMWY2NDJlNWE1NTAwZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJDb2xvci5oIgog
I2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisjaW5jbHVk
ZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNywyMCArMzksMzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmF0aXZlSW1hZ2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFnZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZvaWQg
bmF0aXZlSW1hZ2VXaWxsQmVEZWxldGVkKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgPSAw
OworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgfTsK
KwogICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZShQ
bGF0Zm9ybUltYWdlUHRyJiYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgfk5hdGl2ZUltYWdlKCk7
CisKICAgICBjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIHNpemUo
KSBjb25zdDsKICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7CiAgICAgQ29sb3Igc2luZ2xlUGl4
ZWxTb2xpZENvbG9yKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSB7IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlcihPYnNlcnZlciogb2JzZXJ2ZXIp
IHsgbV9vYnNlcnZlciA9IG9ic2VydmVyOyB9CiAgICAgdm9pZCBjbGVhclN1YmltYWdlcygpOwog
CiBwcml2YXRlOgogICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7CiAKICAgICBQ
bGF0Zm9ybUltYWdlUHRyIG1fcGxhdGZvcm1JbWFnZTsKKyAgICBPYnNlcnZlciogbV9vYnNlcnZl
ciB7IG51bGxwdHIgfTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgeyBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVy
YXRlKCkgfTsKIH07CiAKK3VzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8TmF0aXZlSW1hZ2U+PjsKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlUmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ5ZjNiMWFmZTUzOTBhOWY5YTRh
MmJiMzk2NTE4NzljZGZiZjE0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmgKQEAgLTAsMCArMSwzNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dXNpbmcgTmF0aXZlSW1hZ2VSZWZlcmVuY2UgPSBSZWY8TmF0aXZlSW1hZ2U+OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCBmNTA2ZGRmNDk1
Mjc1ZGJiNWMwOTAyOGM2MWE0OTM3YTljODc1OTRjLi40NjhhM2Q1NTQ1NjJhOTY3NjM1ZGMxYjc2
OTlmYTI1NjZmNGNhODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTUyLDYgKzUy
LDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcCgpIGNvbnN0CiAKIERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdChEaXNwbGF5TGlzdCYmIG90aGVyKQogICAgIDogbV9pbWFnZUJ1ZmZlcnMoc3RkOjpl
eGNoYW5nZShvdGhlci5tX2ltYWdlQnVmZmVycywgeyB9KSkKKyAgICAsIG1fbmF0aXZlSW1hZ2Vz
KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9uYXRpdmVJbWFnZXMsIHsgfSkpCiAgICAgLCBtX2l0ZW1z
KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pdGVtcywgbnVsbHB0cikpCiAgICAgLCBtX2RyYXdpbmdJ
dGVtRXh0ZW50cyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZHJhd2luZ0l0ZW1FeHRlbnRzLCB7IH0p
KQogewpAQCAtNjgsNiArNjksNyBAQCBEaXNwbGF5TGlzdDo6fkRpc3BsYXlMaXN0KCkgPSBkZWZh
dWx0OwogRGlzcGxheUxpc3QmIERpc3BsYXlMaXN0OjpvcGVyYXRvcj0oRGlzcGxheUxpc3QmJiBv
dGhlcikKIHsKICAgICBtX2ltYWdlQnVmZmVycyA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pbWFn
ZUJ1ZmZlcnMsIHsgfSk7CisgICAgbV9uYXRpdmVJbWFnZXMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fbmF0aXZlSW1hZ2VzLCB7IH0pOwogICAgIG1faXRlbXMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1faXRlbXMsIG51bGxwdHIpOwogICAgIG1fZHJhd2luZ0l0ZW1FeHRlbnRzID0gc3RkOjpleGNo
YW5nZShvdGhlci5tX2RyYXdpbmdJdGVtRXh0ZW50cywgeyB9KTsKICAgICByZXR1cm4gKnRoaXM7
CkBAIC03OSw2ICs4MSw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmNsZWFyKCkKICAgICAgICAgbV9p
dGVtcy0+Y2xlYXIoKTsKICAgICBtX2RyYXdpbmdJdGVtRXh0ZW50cy5jbGVhcigpOwogICAgIG1f
aW1hZ2VCdWZmZXJzLmNsZWFyKCk7CisgICAgbV9uYXRpdmVJbWFnZXMuY2xlYXIoKTsKIH0KIAog
Ym9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJ
dGVtSGFuZGxlIGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDM2OGM3ODA4NzNjYzRl
MDQ5ZTAwMWFmMTRmNWE2YTJiZmU0ZGVkNmUuLjE3NDk5YzdmNjc1NWNiOTliOGU1NDIyNjExMDg1
MDE0N2FkYjhiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC03Nyw2ICs3Nyw3IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgYXNUZXh0KEFzVGV4dEZsYWdzKSBjb25zdDsKIAogICAgIGNvbnN0
IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZUJ1ZmZlcnM7IH0KKyAgICBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZlcldyaXRpbmdD
bGllbnQqKTsKQEAgLTE1OCw5ICsxNTksMTUgQEAgcHJpdmF0ZToKICAgICAgICAgbV9pbWFnZUJ1
ZmZlcnMuYWRkKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgV1RG
TW92ZShpbWFnZUJ1ZmZlcikpOwogICAgIH0KIAorICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShS
ZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCisgICAgeworICAgICAgICBtX25hdGl2ZUltYWdlcy5h
ZGQoaW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGltYWdlKSk7
CisgICAgfQorICAgIAogICAgIHN0YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRG
bGFncywgSXRlbUhhbmRsZSk7CiAKICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZl
cnM7CisgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxPcHRpb25hbDxGbG9hdFJl
Y3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1F
eHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcAppbmRleCBjN2Y4YWM4NTgwOTJhMjYwODJlODVjYjhlZGQyNzM0OTY1M2Q0Yzg1Li5lYzJk
NmVhNTUwOGEyMjA4NTI5N2E1NWJjNWMxNzM4MDBjNWE1YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMzMwLDEwICszMzAsNiBAQCB2b2lkIEl0
ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICBnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKS5+RHJh
d0xpbmVzRm9yVGV4dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdOYXRpdmVJbWFnZTogewotICAgICAgICBnZXQ8RHJhd05hdGl2ZUltYWdlPigpLn5E
cmF3TmF0aXZlSW1hZ2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3UGF0aDogewogICAgICAgICBnZXQ8RHJhd1BhdGg+KCkufkRyYXdQYXRoKCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQ0MCw2ICs0MzYsMTAgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0
cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RHJhd0ltYWdlQnVmZmVyPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogeworICAgICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3TmF0aXZlSW1hZ2U+Ojp2YWx1ZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6IHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJh
d0xpbmU+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBjOThmODQ4MzBlMDEwYWFlZWVjMmZjMmU4MTNkODBjY2Ji
NzRmNjkxLi5hMWFkNDYwMWE2ZDkyMmRjOTc4MDA4NGM4MzQxMGZkNWM1ZWVhYWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC0yNjAsNyArMjYwLDYgQEAg
Ym9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
R2x5cGhzOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZToKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TGluZXNGb3JUZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0
dGVybjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZToKQEAgLTI5MCw2ICsyODks
NyBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlw
c2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKICAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVu
Y3lMYXllcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCBjN2VkZDc1
OGQ5OGZlMTkyN2FjNTIzNjU0ZTFkZjQ2OTM4YTBmMjdkLi42MTUzMWZiOTI1OTQ2NmQwMDAxN2Qy
ZWU2MzRlMzBjMmQ5MWJmYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
CkBAIC00NjMsMTggKzQ2MywxNCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAgIHJldHVybiB0czsK
IH0KIAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKLSAgICA6IG1faW1hZ2UoaW1hZ2UpCi0gICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUp
Ci0gICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKLSAgICAsIG1fc3JjUmVjdChzcmNS
ZWN0KQotICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCitOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2
b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3ZvaWQgRHJhd05hdGl2ZUltYWdlOjph
cHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlJiBpbWFnZSkgY29uc3QK
IHsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9k
ZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKKyAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1Jl
Y3QsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaAppbmRleCBhODYxMWM3NjFmMWRhMzg1NmJlNDMyMTM2ZjQxZTcyZDE4NTdl
NGU5Li4xZTRlMDFkMzllNzU4YmE5OTlmNjlhNDYxM2M2ZTRmOGJiYzQ0NjQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEyNzQsNzEgKzEyNzQsMzYgQEAgcHJpdmF0ZToK
IGNsYXNzIERyYXdOYXRpdmVJbWFnZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJ
dGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0RyYXdpbmdJdGVtID0gdHJ1ZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKTsKKyAgICBEcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgICAgIDogbV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAg
ICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKKyAgICAgICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChk
ZXN0UmVjdCkKKyAgICAgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAgICAgLCBtX29wdGlv
bnMob3B0aW9ucykKKyAgICB7CisgICAgfQogCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAKLSAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNT
RVJUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgdm9pZCBhcHBseShH
cmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSYpIGNvbnN0OwogCiAgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KICAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERyYXdOYXRpdmVJbWFnZT4gZGVjb2RlKERlY29k
ZXImKTsKLQogcHJpdmF0ZToKLSAgICBSZWY8TmF0aXZlSW1hZ2U+IG1faW1hZ2U7CisgICAgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwog
ICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJl
Y3Q7CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBt
X29wdGlvbnM7CiB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwg
bV9pbWFnZTsKLSAgICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOwotICAgIGVuY29kZXIgPDwgbV9k
ZXN0aW5hdGlvblJlY3Q7Ci0gICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7Ci0gICAgZW5jb2RlciA8
PCBtX29wdGlvbnM7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxEcmF3
TmF0aXZlSW1hZ2U+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17
Ci0gICAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gaW1hZ2U7Ci0gICAgZGVjb2RlciA+PiBp
bWFnZTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0g
ICAgT3B0aW9uYWw8RmxvYXRTaXplPiBpbWFnZVNpemU7Ci0gICAgZGVjb2RlciA+PiBpbWFnZVNp
emU7Ci0gICAgaWYgKCFpbWFnZVNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uUmVjdDsKLSAgICBkZWNvZGVyID4+
IGRlc3RpbmF0aW9uUmVjdDsKLSAgICBpZiAoIWRlc3RpbmF0aW9uUmVjdCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gc3JjUmVjdDsKLSAg
ICBkZWNvZGVyID4+IHNyY1JlY3Q7Ci0gICAgaWYgKCFzcmNSZWN0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlvbnM+IG9wdGlv
bnM7Ci0gICAgZGVjb2RlciA+PiBvcHRpb25zOwotICAgIGlmICghb3B0aW9ucykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiB7eyAqaW1hZ2UsICppbWFnZVNpemUs
ICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyB9fTsKLX0KLQogY2xhc3MgRHJh
d1BhdHRlcm4gewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5
cGUgPSBJdGVtVHlwZTo6RHJhd1BhdHRlcm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKaW5kZXggYmYzY2IzNDAxNDFkM2VmN2EwMTZlNGU5ZWVjNTdjYWVlYWRkYWNh
OC4uZmFhN2RkZmZlM2U4ZTE4YjVmZTkwZGFkZTMzMWZmNzBhMWM1YjY4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTg4LDEzICsxODgsMTggQEAgSW1h
Z2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXQKIHZvaWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJD
b3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgaW1hZ2VCdWZmZXIuZmx1c2hEcmF3aW5nQ29udGV4dCgpOwotICAgIG1f
ZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihtYWtlUmVmKGltYWdlQnVmZmVyKSk7CisgICAg
aWYgKCFtX2RlbGVnYXRlKQorICAgICAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlSW1hZ2VCdWZmZXIo
bWFrZVJlZihpbWFnZUJ1ZmZlcikpOwogICAgIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdl
QnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewotICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICBpZiAoIW1fZGVsZWdhdGUp
CisgICAgICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgZWxz
ZQorICAgICAgICBtX2RlbGVnYXRlLT5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICBhcHBl
bmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3Jk
ZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGU2NTk2YmU4MjJiZTc5YzFlZmFjM2U4MTE3M2Mz
YTIzNDBlNzljMTkuLmZmYTFmZTM4MWQ2YzI0M2Q2YzM1MDdmMjg5N2UxMzlmNWYyOGU3MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNjYsNiArNjYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KICAgICB9OwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDVkZjBlMDA1
NzAxOTdkMWM0YTNiZGJiZWEzNzk1MmYyOGRhOTMyNTMuLjA2ZGRmNWMwNzdmZGQ2OTI1ZjNmMDJi
ZjFkZDcyZDhlNzUzMjk3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5jcHAKQEAgLTM0LDEwICszNCwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IERpc3BsYXlMaXN0IHsKIAotUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhh
c2hNYXAqIGltYWdlQnVmZmVycywgRGVsZWdhdGUqIGRlbGVnYXRlKQorUmVwbGF5ZXI6OlJlcGxh
eWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgY29uc3QgTmF0aXZl
SW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1f
Y29udGV4dChjb250ZXh0KQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKICAgICAs
IG1faW1hZ2VCdWZmZXJzKGltYWdlQnVmZmVycyA/ICppbWFnZUJ1ZmZlcnMgOiBtX2Rpc3BsYXlM
aXN0LmltYWdlQnVmZmVycygpKQorICAgICwgbV9uYXRpdmVJbWFnZXMobmF0aXZlSW1hZ2VzID8g
Km5hdGl2ZUltYWdlcyA6IG1fZGlzcGxheUxpc3QubmF0aXZlSW1hZ2VzKCkpCiAgICAgLCBtX2Rl
bGVnYXRlKGRlbGVnYXRlKQogewogfQpAQCAtNTUsNiArNTYsMTMgQEAgdm9pZCBSZXBsYXllcjo6
YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgICAgIGRyYXdJdGVtLmFwcGx5KG1f
Y29udGV4dCwgKmltYWdlQnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAg
ICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+KCkpIHsKKyAgICAgICAgYXV0byYgZHJhd0l0
ZW0gPSBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7CisgICAgICAgIGlmIChhdXRvKiBpbWFn
ZSA9IG1fbmF0aXZlSW1hZ2VzLmdldChkcmF3SXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSkpCisgICAgICAgICAgICBkcmF3SXRlbS5hcHBseShtX2NvbnRleHQsICppbWFnZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpdGVtLmFwcGx5KG1fY29udGV4dCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCA5MmVjNjg4OWMzNWVmODZk
M2Y5ZTk0YmVjNjY2ZTdhNzhhZTU5N2NmLi4yYzAxOWVlMGNjOGEzNmUyYzRmNWQyNTMwMjAwZjg3
NWQxNmFkZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
cGxheWVyKTsKIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IElt
YWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlz
dCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFn
ZUhhc2hNYXAqID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8
RGlzcGxheUxpc3Q+IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBi
b29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKQEAgLTU5LDYgKzU5LDcgQEAgcHJpdmF0ZToK
ICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25zdCBEaXNwbGF5TGlzdCYg
bV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIG1faW1hZ2VCdWZm
ZXJzOworICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbV9uYXRpdmVJbWFnZXM7CiAgICAg
RGVsZWdhdGUqIG1fZGVsZWdhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IDY0YjFlNmJkYWU1ZWNi
ZjYzMDhlYjczNTRiMzE0Mzk4OTEzNzEyMjUuLjIxZWJhZDYxOTBlZmJjOGY5ZjUyODg5Mzc1NTcy
NWEwNDU1OWM3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC02OSw3ICs2OSw4IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBpZiAoIWRpc3BsYXlMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY29u
c3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJl
c291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKLSAgICAgICAgICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250
ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCB0aGlzIH07CisgICAgICAgICAgICBj
b25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3Rl
UmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAgICAgICAgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsIHRoaXMg
fTsKICAgICAgICAgICAgIHJlcGxheWVyLnJlcGxheSgpOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGQyMzdhNjNiODg2OTY0MjFiYjlhMjU3ZWY5ZGIyMTdj
ZmU5ZjljZjguLmRiYWIwMWFkM2MwNWRlZGRiMzNhZmY3MTZhMjI2OTRiMjM5ZDEwYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTE3Miw2ICsxNzIsMTEgQEAgdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIEkKICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0YVJlZmVyZW5jZShX
VEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
YWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKK3sKKyAgICBtX3JlbW90
ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlKSk7Cit9CisKIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAg
bV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwpAQCAtMjAyLDggKzIwNyw2IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0
OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
ZGVjCiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdJbWFn
ZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVh
dGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9j
YXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6
Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJ
bWFnZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdQYXRoOgogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERp
c3BsYXlMaXN0OjpEcmF3UGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAtMjQ2LDYgKzI0OSw3
IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXI6CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJ
bWFnZToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4
IDdhYzk2MjAxMDNlNTdjMDdiYjJlZWUzM2ViZWZiMmM0NWYwMDdkZDEuLjQxNTkwNGQ2NzczZTAx
ODJhYWI5YjExYTIwZGRlM2VjNWVmYmYwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDYs
NiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07CiB9CiBjbGFzcyBGbG9h
dFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4
X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogfQpAQCAtMTA1LDYgKzEwNiw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlJiwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGdldEltYWdlRGF0YShXZWJD
b3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVj
dCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOworICAgIHZvaWQg
Y2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQg
cmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggZjU1YjAyNmJk
YjVlNjNhMTRjZjM2MjE0YTgzZThiYmU4ODYzMWExYi4uNmRkYmVhY2Q2MjhjNzcxZDRmYmQ4NzI1
NjkyZTk1Y2YxMmM5MjkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4KQEAgLTI3LDYgKzI3LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBO
b3RSZWZDb3VudGVkIHsKICAgICBTdWJtaXREaXNwbGF5TGlzdChXZWJLaXQ6OlNoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIEZsdXNoRGlzcGxheUxpc3RB
bmRDb21taXQoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSBkaXNwbGF5TGlzdCwgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiAgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cworICAg
IENhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UgbmF0aXZlSW1h
Z2UpCiAgICAgRGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgaGFuZGxlKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGUuY3BwCmluZGV4IDVlMGE2NzQyNzY0ZGZkNDIwYWViYWViYjk4ZTJkMTBkYWI1NTQ5
ZDQuLmMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNmYmRiN2VkNTZkYzRiMmMzNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5jcHAKQEAgLTQyLDEwICs0MiwxOCBAQCBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VD
YWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCiAgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
fQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2
ZUltYWdlPiYmIGltYWdlKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9uYXRpdmVJbWFnZXMu
YWRkKGltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbWFnZSkp
OworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9
CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAg
ICAgaWYgKG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
KQogICAgICAgICByZXR1cm47CisgICAgaWYgKG1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CiAgICAgLy8gQ2FjaGluZyB0
aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSByZWxlYXNpbmcg
aXQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAppbmRleCBhNGU0
Mjg2NjkyNzlmMWVhZjlkM2U4NTI1NTJiNDI0NDQ5OWE0OWI0Li5jNWRkZTY4MWI5YmFiNDM3ZGQy
N2NlN2JlYWY2ZTU5YWM5ZWIyOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTQ0LDEyICs0NCwxNSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoUmVmPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiYmKTsKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIo
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNhY2hlTmF0
aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKICAgICB2b2lkIHJlbGVhc2VS
ZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IAogICAgIGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpOYXRp
dmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1h
Z2VzOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1h
Z2VCdWZmZXJzOworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdl
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKaW5kZXggZGJhNWIyNDI5MDA1ZjJhYWViMGNiODEzOGU5ODdiMmQxNDJm
ODhhNy4uYTE3YWU5ZmVmYjkyOTBhMTcwMjgzMDAwMjgyNGJiNjFmOGEzZDBiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTgsNyArMjE4LDcgQEAgZGVm
IHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNv
cmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhU2Vz
c2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2UnLAorICAgICAg
ICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UnLAogICAgICAgICAnV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeScs
CiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMTU3MTNkNWNlOTJkMjljMTQ5Mzc3NWMy
M2ViMWNkZWQ2NmM3ZGI5ZS4uZDA1MmU3ZjY3ZDlhNDk0NTZiNjFiNjVmZWI3NDdlNTY3MzYzMWE4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0xMTE1LDYgKzExMTUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdl
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8TmF0aXZlSQogICAgIFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5k
bGUpOwogCisgICAgZW5jb2RlciA8PCBpbWFnZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCk7CiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKQEAgLTExMjUsNiArMTEyNiwxMSBAQCBP
cHRpb25hbDxSZWY8TmF0aXZlSW1hZ2U+PiBBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjbwogICAgIGlmICghZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0
Lmhhc1ZhbHVlKCkgfHwgIWRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dC52YWx1ZSgpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShoYW5kbGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAt
MTE0MSw2ICsxMTQ3LDcgQEAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gQXJndW1lbnRDb2Rl
cjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZGVjb2RlKERlY29kZXImIGRlY28KICAgICBpZiAoIW5hdGl2
ZUltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgbmF0aXZlSW1hZ2Ut
PnNldFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIHJldHVybiBtYWtlUmVmKCpuYXRpdmVJbWFnZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKaW5kZXggNTk4NTdmZjA3YTVhYzJmNGIzMmM1NjYzMjUxNGI0NWRlMTAx
OTdiOC4uNzExZjU1MWU1NTQzYjg1OGM5MTgxYTIyODNiZjkwOGE3ZGIyNjdkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTE3OCw2ICsxNzgsMTIgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBzdWJtaXREaXNwbGF5TGlzdChkaXNwbGF5TGlzdCk7CiAgICAgICAgIGRpc3BsYXlMaXN0
LmNsZWFyKCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3Jl
OjpOYXRpdmVJbWFnZSYgaW1hZ2UpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+Y2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgfQogCiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3Qg
Y2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewpAQCAtMjA3LDggKzIxMyw2IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd0ltYWdlPigpKTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVy
OjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRl
eHQ+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0PigpKTsK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJ
bWFnZToKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVj
dDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlPihpdGVtLmdldDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlPigpKTsKICAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgogICAgICAgICAgICAgcmV0dXJuIElQ
Qzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
UGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRoPigpKTsKICAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAt
MjUxLDYgKzI1NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToK
ICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgog
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CiAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVu
Y3lMYXllcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA4
ZDg2MTViOGE5NmM3NDQ3MGIwOTQzN2Q4Y2Q3YzdhMTY1YmM2NWRhLi5mODZlMDI1YjUwZTk4MmJm
NDM0MGJjNTFhYTU0OGMyZDhlYmQ4MjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2kK
IAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgICAgICBt
X3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLT5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOworICAgICAg
ICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZUltYWdlQnVmZmVyKG1ha2VSZWYoKmlt
YWdlQnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKICAgICB9CiAKQEAgLTEy
OSw2ICsxMjksMTMgQEAgRGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmZsdXNoRGlzcGxheUxpc3RBbmRDb20KICAgICByZXR1cm4gc2VudEZs
dXNoSWRlbnRpZmllcjsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNh
Y2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQoreworICAgIGlmICghbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSkpCisgICAgICAgIHJldHVy
bjsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2
ZUltYWdlKG1ha2VSZWYoaW1hZ2UpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9
CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKIHsKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5yZWxlYXNlSW1hZ2VCdWZmZXIo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oCmluZGV4IGE1NDJjODMzNWUwZTUzM2UwNTEzZTU3NjQyNjI0NWViYjc2NDFjZjku
LmMxZTdmNTRmMTY3YTAyNDI3ZjEzOWU1YzI0OTAyZWRiNjVmM2FjNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNS
ZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc3Vi
bWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jiwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0
aXZlSW1hZ2UmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZCgpOwpAQCAtODYsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
aW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmbHVz
aERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk7CisgICAgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsgKnRoaXMg
fTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciwgUmVmUHRyPFNoYXJlZE1lbW9yeT4+IG1fc2hhcmVkSXRlbUJ1ZmZlcnM7CiAgICAgUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7IFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IGZhZmY5MmEwNGRkZmNiYmQ1ODM4NmVjOWJmYWFkOWUx
MzU1YTU1NmYuLmY0NmEzZGQ4YzE0ODk0NzdjNTk1Njg4ZDgzZWExMDY4NjNhNWEwMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTI5LDE0ICsyOSwxOCBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OmNhY2hlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVyKQorUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHko
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkp
CisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQnVmZmVycy5hZGQocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKFJlZjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW1hZ2VCdWZm
ZXJzLmFkZChpbWFnZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFdURk1v
dmUoaW1hZ2VCdWZmZXIpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0
LmlzTmV3RW50cnkpOwogfQogCkBAIC00NSwxMiArNDksMzAgQEAgSW1hZ2VCdWZmZXIqIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGkKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiB9CiAKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbmF0
aXZlSW1hZ2VzLmVuc3VyZShpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZd
KCkgeworICAgICAgICBpbWFnZS5zZXRPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VSZWYoaW1hZ2UpOworICAgIH0pOworICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeTsK
K30KKwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcihS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
ewogICAgIGJvb2wgZm91bmQgPSBtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKK3Zv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpuYXRpdmVJbWFnZVdpbGxCZURlbGV0ZWQoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBpZiAoIW1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byBy
ZW1vdmUgdGhpcyByZXNvdXJjZS4KKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5y
ZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAppbmRleCBiZGU4MTVhMTNjMWQ5NTFkNTIwNDkz
NjhhODVjOGM0MGNhMTRkY2YzLi43ZmUwZjhmNzI4ZmNkM2Q4ODVjZDRkNzM2YjRhNzUyMDY1OTU1
YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTI3LDI3ICsyNywzMiBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1
ZmZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEltYWdlQnVmZmVyOwotfQotCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsKK2NsYXNz
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5IDogcHVibGljIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpPYnNlcnZlciB7CiBwdWJsaWM6
Ci0gICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkgPSBkZWZhdWx0OworICAgIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmKTsKIAotICAgIHZv
aWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkltYWdlQnVmZmVyKik7CisgICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hl
ZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
dm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKIAorICAgIGJvb2wgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYp
OworICAgIHZvaWQgcmVsZWFzZU5hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CisKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
V2ViQ29yZTo6SW1hZ2VCdWZmZXIqPjsKKyAgICB2b2lkIG5hdGl2ZUltYWdlV2lsbEJlRGVsZXRl
ZChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOwogCi0gICAg
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIFdlYkNvcmU6Ok5hdGl2
ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413754</attachid>
            <date>2020-11-10 15:58:31 -0800</date>
            <delta_ts>2020-11-10 18:37:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201110155830.patch</filename>
            <type>text/plain</type>
            <size>52127</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTljYzBhYmM0MDE2MjI2
NDhiNDc1YWY5MzMzNjc1ZGJhM2E5ZTI4ZC4uMWY4M2UyNmUyZDJmZjI0YzEwNDg5Yjc0YzE5NWZl
YjMzNTljMzk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIwLTExLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2lu
ZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggYWxsIHRoZSBkcmF3
SW1hZ2UgZnVuY3Rpb25zIHdpbGwgbm90IGJlIHJlY29yZGVkIGFzIGRpc3BsYXkKKyAgICAgICAg
bGlzdCBpdGVtcy4gSW5zdGVhZCB3ZSBhcmUgZ29pbmcgdG8gbGV0IHRoZW0gcHJvY2VlZCB0aWxs
IHRoZXkgcmVhY2ggbG93ZXIKKyAgICAgICAgbGV2ZWwgY2FsbHMgc3VjaCBhcyBkcmF3TmF0aXZl
SW1hZ2UoKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UpOgorICAgICAgICBXZSBoYXZlIHRvIGxldCB0aGVzZSBmdW5jdGlvbiBwcm9jZWVkIHRp
bGwgdGhleSBlbmQgdXAgY2FsbGluZyB0aGUgCisgICAgICAgIERPTSByZW5kZXJpbmcgZm9yIFNW
R0ltYWdlLCBQREZEb2N1bWVudEltYWdlOjpkcmF3IGZvciBwZGYgaW1hZ2UgYW5kIAorICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UgZm9yIHRoZSByZXN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6On5O
YXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNldFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2V0T2Jz
ZXJ2ZXIpOgorICAgICAgICBBZGQgYW4gb2JzZXJ2ZXIgdG8gTmF0aXZlSW1hZ2Ugd2hvc2Ugam9i
IGlzIHRvIG9ic2VydmUgd2hlbiBpdCBpcyBiZWluZworICAgICAgICBkZXN0cm95ZWQuIEFkZCBh
bHNvIGFuIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBzbyBpdCBjYW4gYmUgdXNlZCB0bwor
ICAgICAgICByZWZlcmVuY2UgdGhlIE5hdGl2ZUltYWdlIGluIGEgTmF0aXZlSW1hZ2VIYXNoTWFw
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaDog
QWRkZWQuCisgICAgICAgIFRoaXMgZGVmaW5pdGlvbiBjYW4gYmUgdXNlZCB0byBlbmNvZGUvZGVj
b2RlIGEgUmVmPE5hdGl2ZUltYWdlPiBmb3IgSVBDCisgICAgICAgIG1lc3NhZ2VzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjptX25hdGl2ZUltYWdlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6bmF0aXZlSW1hZ2VzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVOYXRpdmVJbWFnZSk6
CisgICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBjYWNoZSB0aGUgTmF0aXZlSW1hZ2UgaW4gRGlz
cGxheUxpc3Qgc3VjaCB0aGF0IGl0cworICAgICAgICByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgY2FuIGJlIHVzZWQgd2hlbiByZWNvcmRpbmcgRHJhd05hdGl2ZUltYWdlCisgICAgICAgIGFu
ZCBtX25hdGl2ZUltYWdlcyBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIE5hdGl2ZUltYWdlIHdo
ZW4gcmVwbGF5aW5nCisgICAgICAgIGJhY2sgRHJhd05hdGl2ZUltYWdlLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVzdHJveSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzSW5saW5lSXRlbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBw
bHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFn
ZTo6RHJhd05hdGl2ZUltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2
ZUltYWdlOjplbmNvZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgRHJhd05h
dGl2ZUltYWdlIGlzIGFuIGlubGluZSBpdGVtIG5vdy4gTm8gZW5jb2RpbmcvZGVjb2RpbmcgaXMg
bmVlZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
QXNrIHRoZSBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlIHRvIGNhY2hlIHRoZSBOYXRp
dmVJbWFnZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBs
YXllcjo6UmVwbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVy
OjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgIFJlc29sdmUgdGhlIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBvZiBEcmF3TmF0aXZlSW1hZ2UgdG8gYSBOYXRpdmVJbWFnZQorICAgICAg
ICBmcm9tIHRoZSBtX25hdGl2ZUltYWdlcyBiZWZvcmUgZHJhd2luZyBpdC4KKwogMjAyMC0xMS0x
MCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10g
QWRkIHN1cHBvcnQgZm9yIHJlcGxhY2VkIGVsZW1lbnQgYmFzZWxpbmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTcx
MDM1NDI1ZDIzMWJmMjUwMWM0NTA4YTk5ZjFjYTZkZGY5OTQwNy4uNzRhMmRiM2M3YjFkNjhkYjU3
MTEyMDc3YWY2OTAwOTE4NzZkODMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAyMC0x
MS0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIENhY2hlIHRoZSBOYXRpdmVJbWFnZSBpbiBHUFUgUHJvY2VzcyBhbmQgYWxsb3cg
cmVmZXJlbmNpbmcgaXQgd2l0aCBpdHMgUmVtb3RlUmVzb3VyY2VJZGVudGlmaWVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWNvcmRlcjo6ZHJhd05h
dGl2ZUltYWdlKCkgd2lsbCBlbnN1cmUgdGhlIE5hdGl2ZUltYWdlIGlzIGNhY2hlZCBiZWZvcmUK
KyAgICAgICAgcmVjb3JkaW5nIHRoZSBEcmF3TmF0aXZlSW1hZ2UgaXRlbSB3aXRoIHRoZSByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuCisKKyAgICAgICAgQmVjYXVzZSBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5IGlzIGEgc3VwZXJjbGFzcyBvZiBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OgorICAg
ICAgICBEZWxlZ2F0ZSwgaXQgd2lsbCBlbnN1cmUgdGhlIE5hdGl2ZUltYWdlIGlzIGNhY2hlZCBp
biBpdHMgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LgorCisgICAgICAgIElmIHRoZSBOYXRpdmVJ
bWFnZSBpcyByZWdpc3RlcmVkIGluIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBmb3IgdGhlIGZp
cnN0CisgICAgICAgIHRpbWUsIGl0IGlzIGdvaW5nIHRvIGJlIHNlbnQgYXMgYW4gSVBDIG1lc3Nh
Z2UgdG8gR1BVLiBVcG9uIHJlY2VpdmluZyB0aGlzCisgICAgICAgIG1lc3NhZ2UsIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgd2lsbCBjYWNoZSB0aGlzIE5hdGl2ZUltYWdlIGluIGl0cworICAgICAg
ICBSZW1vdGVSZXNvdXJjZUNhY2hlLiBUaGlzIG1lc3NhZ2UgaGFzIHRvIGJlIHJlY2VpdmVkIGZv
ciBhbnkgTmF0aXZlSW1hZ2UKKyAgICAgICAgb25seSBvbmNlIGZvciBpdHMgZW50aXJlIGxpZmUg
dGltZS4KKworICAgICAgICBXaGVuIGZsdXNoaW5nIHRoZSBEaXNwbGF5TGlzdCBvZiBhbnkgSW1h
Z2VCdWZmZXIsIFJlbW90ZUltYWdlQnVmZmVyIHdpbGwKKyAgICAgICAgZW5zdXJlIHRoZSBOYXRp
dmVJbWFnZXMgYXJlIGNhY2hlZCBpbiB0aGUgUmVtb3RlUmVzb3VyY2VDYWNoZSBhcmUgcGFzc2Vk
CisgICAgICAgIHRvIERpc3BsYXlMaXN0OjpSZXBsYXllciBzbyBpdCBjYW4gdXNlIHRoZW0gdG8g
Z2V0IE5hdGl2ZUltYWdlIGZvciBldmVyeQorICAgICAgICBEcmF3TmF0aXZlSW1hZ2Ugd2l0aCB0
aGUgc2FtZSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaXQgd2FzIHJlY29yZGVkCisgICAg
ICAgIHdpdGguCisKKyAgICAgICAgV2hlbiBOYXRpdmVJbWFnZSBpcyBiaW5nIGRlc3Ryb3llZCwg
aXRzIGRlc3RydWN0b3Igd2lsbCBjYWxsIGl0cyBvYnNlcnZlcgorICAgICAgICB2aXJ0dWFsIG1l
dGhvZCByZWxlYXNlTmF0aXZlSW1hZ2UoKS4gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHdpbGwg
YmUgYQorICAgICAgICBzdXBlcmNsYXNzIE5hdGl2ZUltYWdlOjpPYnNlcnZlciBzbyBpdHMgb3Zl
cnJpZGluZyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuCisgICAgICAgIFdoZW4gUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoKSBpcyBjYWxsZWQgaXQgaXMgZ29pbmcK
KyAgICAgICAgdG8gZGVsZXRlIHRoZSBOYXRpdmVJbWFnZSBmcm9tIFJlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eSBhbmQgaXMgZ29pbmcgdG8KKyAgICAgICAgc2VuZCBhIG1lc3NhZ2UgdG8gR1BVIHRv
IGRlbGV0ZSB0aGUgY29ycmVzcG9uZGluZyBOYXRpdmVJbWFnZSBmcm9tCisgICAgICAgIFJlbW90
ZVJlc291cmNlQ2FjaGUgdmlhIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVS
ZXNvdXJjZSgpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hl
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpk
ZWNvZGVJdGVtKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2Fj
aGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGU6Om5hdGl2ZUltYWdlcyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUlt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOgorCiAyMDIwLTExLTEwICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjQ2F0YWx5c3RdIEFkZCBl
bnRpdGxlbWVudCBmb3IgbWVzc2FnZSBmaWx0ZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDI0
NzIyM2Y4YzRmMzFhNzBiYTRiYWFhNDU5MzUxOWQyN2Y2NDMzODMuLmM4Y2NmOGZmYTEzYjc2OGUz
MWFkNzdjOGRiNDdjNjdjOWNhOTFhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTIxNiw2ICsx
MjE2LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFVc2FnZUluZm8uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hp
bXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJiODI0ODZmYjk0ZTY1Yzc5
NWE2Nzc3NjZhZGYxMzQxOGY5ZmU3M2YuLjhkZmQxOWM2Y2U3MjYwZDc2NWZjNTMwOTlmOWQ3MDI1
OTJhNGM4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIxNjUsNiArMjE2NSw3IEBACiAJCTcyOTlCQzY4MjNENkE1M0UwMEND
Njg4MyAvKiBSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOUQw
NTMwMjUzMTQyNDMwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUzMTNF
MjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAx
QzlEMDMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9u
RnJhbWVSYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNzJBQjlBMjEyNTVBOUZERTAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFCOUExRjI1
NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0
MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJC
YWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhG
NDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5M0U4
NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVz
c2FnZUV2ZW50LmggKi87IH07CkBAIC05OTcxLDYgKzk5NzIsNyBAQAogCQk3Mjk5QkM2NDIzRDY4
NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
bHBoYVByZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
OTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5RDA1MkUy
NTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJl
bmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUy
M0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZm
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0MDgsNiArMjY0MTAsNyBAQAog
CQkJCTMxNEJFM0E1MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
aCAqLywKIAkJCQk3MjUyMzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICov
LAogCQkJCTU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAorCQkJ
CTcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovLAog
CQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1
MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMw
Mjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovLApAQCAtMzM0MzgsNiArMzM0NDEsNyBA
QAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTcyNkQ1NkUzMjUzQUUzNjYwMDAyRUY5MCAvKiBOYXRpdmVJbWFn
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJBQjlBMjEyNTVBOUZERTAwRTZFQkYxIC8qIE5hdGl2
ZUltYWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBB
MDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMw
Qjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMDI1OGQ2NDFkNzY0Yjk5YWIxY2Q4Y2RmOTQyOThkMGRk
Zjg3YjE0NS4uM2ZlZTg1OTgzMmE3YzAxNDFhMDc5MDFmYTk1NDI4YmRlNTJhMWJkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCkBAIC03NjAsOSArNzYwLDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRO
b3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0lt
YWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKLQogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAgICByZXR1cm4gaW1hZ2Uu
ZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CkBAIC03NzIsOSAr
NzY5LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAg
aWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2Us
IGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKLQogICAg
IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRo
aXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAgICByZXR1
cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwg
c3BhY2luZywgb3B0aW9ucyk7CiB9CkBAIC03ODUsOSArNzc5LDYgQEAgSW1hZ2VEcmF3UmVzdWx0
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1h
Z2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0
dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zKTsKLQogICAgIGlmIChoUnVsZSA9
PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CiAg
ICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KICAgICAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFn
ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKaW5kZXggM2YxM2RjYWIzNWFjOGM1YTk4
MWRkZDlhMzIwODg4ODRmZDRhYTI1My4uOTk2ZDcxOTdhNjFjYTEyYzdkMzRmMmE2YzdhNGJlMTBl
NmVjYmY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmNwcApAQCAtNDIsNCArNDIsMTAgQEAgTmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKFBs
YXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQogewogfQogCitOYXRpdmVJbWFnZTo6fk5h
dGl2ZUltYWdlKCkKK3sKKyAgICBpZiAobV9vYnNlcnZlcikKKyAgICAgICAgbV9vYnNlcnZlci0+
cmVsZWFzZU5hdGl2ZUltYWdlKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmgKaW5kZXggZDA2MmI5N2ZkNDQ0ZjBjZWFhMjJiZGQ4MzkwMDg4YzMz
MjAyYzI1Mi4uMDM5NDMyNzQ3Zjk4NWZjNTk4MGY5NzFjYjA5NjkyNjBjMDU5MTkwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0zMCw2
ICszMCw4IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsMjAgKzM5LDM3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIE5hdGl2ZUltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZl
SW1hZ2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBjbGFz
cyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0g
ZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VOYXRpdmVJbWFnZShSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIE9ic2Vy
dmVyKCkgPSBkZWZhdWx0OworICAgIH07CisKICAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPE5hdGl2ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0ciYmKTsKIAorICAgIFdFQkNP
UkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgpOworCiAgICAgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYg
cGxhdGZvcm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorICAgIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQogCiAgICAgV0VC
Q09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBbHBoYSgpIGNv
bnN0OwogICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OwogCisgICAgdm9p
ZCBzZXRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgeyBtX3JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciA9IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0T2Jz
ZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQogICAg
IHZvaWQgY2xlYXJTdWJpbWFnZXMoKTsKIAogcHJpdmF0ZToKICAgICBOYXRpdmVJbWFnZShQbGF0
Zm9ybUltYWdlUHRyJiYpOwogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBtX3BsYXRmb3JtSW1hZ2U7
CisgICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXIgeyBudWxscHRyIH07CisgICAgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHsgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwogCit1c2luZyBOYXRpdmVJbWFn
ZUhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5hdGl2
ZUltYWdlPj47CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA0OWYzYjFhZmU1MzkwYTlmOWE0YTJiYjM5NjUxODc5Y2RmYmYxNDAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVy
ZW5jZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIE5hdGl2ZUltYWdlUmVmZXJlbmNlID0gUmVm
PE5hdGl2ZUltYWdlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5jcHAKaW5kZXggZjUwNmRkZjQ5NTI3NWRiYjVjMDkwMjhjNjFhNDkzN2E5Yzg3NTk0Yy4u
NDY4YTNkNTU0NTYyYTk2NzYzNWRjMWI3Njk5ZmEyNTY2ZjRjYTg3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwCkBAIC01Miw2ICs1Miw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmR1bXAoKSBj
b25zdAogCiBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QoRGlzcGxheUxpc3QmJiBvdGhlcikKICAg
ICA6IG1faW1hZ2VCdWZmZXJzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pbWFnZUJ1ZmZlcnMsIHsg
fSkpCisgICAgLCBtX25hdGl2ZUltYWdlcyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fbmF0aXZlSW1h
Z2VzLCB7IH0pKQogICAgICwgbV9pdGVtcyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faXRlbXMsIG51
bGxwdHIpKQogICAgICwgbV9kcmF3aW5nSXRlbUV4dGVudHMoc3RkOjpleGNoYW5nZShvdGhlci5t
X2RyYXdpbmdJdGVtRXh0ZW50cywgeyB9KSkKIHsKQEAgLTY4LDYgKzY5LDcgQEAgRGlzcGxheUxp
c3Q6On5EaXNwbGF5TGlzdCgpID0gZGVmYXVsdDsKIERpc3BsYXlMaXN0JiBEaXNwbGF5TGlzdDo6
b3BlcmF0b3I9KERpc3BsYXlMaXN0JiYgb3RoZXIpCiB7CiAgICAgbV9pbWFnZUJ1ZmZlcnMgPSBz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1faW1hZ2VCdWZmZXJzLCB7IH0pOworICAgIG1fbmF0aXZlSW1h
Z2VzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX25hdGl2ZUltYWdlcywgeyB9KTsKICAgICBtX2l0
ZW1zID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zLCBudWxscHRyKTsKICAgICBtX2RyYXdp
bmdJdGVtRXh0ZW50cyA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9kcmF3aW5nSXRlbUV4dGVudHMs
IHsgfSk7CiAgICAgcmV0dXJuICp0aGlzOwpAQCAtNzksNiArODEsNyBAQCB2b2lkIERpc3BsYXlM
aXN0OjpjbGVhcigpCiAgICAgICAgIG1faXRlbXMtPmNsZWFyKCk7CiAgICAgbV9kcmF3aW5nSXRl
bUV4dGVudHMuY2xlYXIoKTsKICAgICBtX2ltYWdlQnVmZmVycy5jbGVhcigpOworICAgIG1fbmF0
aXZlSW1hZ2VzLmNsZWFyKCk7CiB9CiAKIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JG
bGFncyhBc1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaAppbmRleCAzNjhjNzgwODczY2M0ZTA0OWUwMDFhZjE0ZjVhNmEyYmZlNGRlZDZlLi4xNzQ5
OWM3ZjY3NTVjYjk5YjhlNTQyMjYxMTA4NTAxNDdhZGI4Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGFzVGV4dChBc1RleHRG
bGFncykgY29uc3Q7CiAKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVy
cygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9CisgICAgY29uc3QgTmF0aXZlSW1h
Z2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsg
fQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyQ2xpZW50KEl0ZW1CdWZm
ZXJSZWFkaW5nQ2xpZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVy
Q2xpZW50KEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50Kik7CkBAIC0xNTgsOSArMTU5LDE1IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1faW1hZ2VCdWZmZXJzLmFkZChpbWFnZUJ1ZmZlci0+cmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCksIFdURk1vdmUoaW1hZ2VCdWZmZXIpKTsKICAgICB9CiAKKyAg
ICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQorICAgIHsK
KyAgICAgICAgbV9uYXRpdmVJbWFnZXMuYWRkKGltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoKSwgV1RGTW92ZShpbWFnZSkpOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgYm9vbCBz
aG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOwogCiAgICAgSW1hZ2VC
dWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25h
dGl2ZUltYWdlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcj4gbV9pdGVtczsKICAg
ICBWZWN0b3I8T3B0aW9uYWw8RmxvYXRSZWN0Pj4gbV9kcmF3aW5nSXRlbUV4dGVudHM7CiAgICAg
Ym9vbCBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYzdmOGFjODU4MDkyYTI2MDgyZTg1
Y2I4ZWRkMjczNDk2NTNkNGM4NS4uZWMyZDZlYTU1MDhhMjIwODUyOTdhNTViYzVjMTczODAwYzVh
NWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAg
LTMzMCwxMCArMzMwLDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgZ2V0
PERyYXdMaW5lc0ZvclRleHQ+KCkufkRyYXdMaW5lc0ZvclRleHQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6IHsKLSAgICAgICAg
Z2V0PERyYXdOYXRpdmVJbWFnZT4oKS5+RHJhd05hdGl2ZUltYWdlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6IHsKICAgICAgICAgZ2V0PERy
YXdQYXRoPigpLn5EcmF3UGF0aCgpOwogICAgICAgICByZXR1cm47CkBAIC00NDAsNiArNDM2LDEw
IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdJbWFnZUJ1ZmZlcj46OnZhbHVlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdMaW5lPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKaW5kZXggYzk4Zjg0ODMw
ZTAxMGFhZWVlYzJmYzJlODEzZDgwY2NiYjc0ZjY5MS4uYTFhZDQ2MDFhNmQ5MjJkYzk3ODAwODRj
ODM0MTBmZDVjNWVlYWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcApAQCAtMjYwLDcgKzI2MCw2IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUp
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
SW1hZ2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Rp
bGVkSW1hZ2U6CkBAIC0yOTAsNiArMjg5LDcgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUg
dHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcjoKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAKaW5kZXggYzdlZGQ3NThkOThmZTE5MjdhYzUyMzY1NGUxZGY0NjkzOGEwZjI3
ZC4uNjE1MzFmYjkyNTk0NjZkMDAwMTdkMmVlNjM0ZTMwYzJkOTFiZmFhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDYzLDE4ICs0NjMsMTQgQEAgc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFnZUJ1ZmZl
ciYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi0gICAgOiBtX2ltYWdlKGltYWdlKQotICAg
ICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQotICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJl
Y3QpCi0gICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKLSAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQor
Tk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0CiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZv
aWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
Cit2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBO
YXRpdmVJbWFnZSYgaW1hZ2UpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
bV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3QsIG1fb3B0
aW9ucyk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIG1faW1hZ2VTaXplLCBt
X2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwogfQogCiBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdl
JiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYTg2MTFjNzYxZjFk
YTM4NTZiZTQzMjEzNmY0MWU3MmQxODU3ZTRlOS4uMWU0ZTAxZDM5ZTc1OGJhOTk5ZjY5YTQ2MTNj
NmU0ZjhiYmM0NDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xMjc0
LDcxICsxMjc0LDM2IEBAIHByaXZhdGU6CiBjbGFzcyBEcmF3TmF0aXZlSW1hZ2UgewogcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBm
YWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBEcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgRHJhd05hdGl2ZUltYWdl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQorICAgICAgICA6IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKKyAgICAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCisgICAg
ICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCisgICAgICAgICwgbV9zcmNSZWN0KHNy
Y1JlY3QpCisgICAgICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCisgICAgeworICAgIH0KIAorICAg
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQogICAgIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uUmVjdDsgfQogCi0gICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsK
KyAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UmKSBj
b25zdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gV1RGOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVj
dDsgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEcmF3
TmF0aXZlSW1hZ2U+IGRlY29kZShEZWNvZGVyJik7Ci0KIHByaXZhdGU6Ci0gICAgUmVmPE5hdGl2
ZUltYWdlPiBtX2ltYWdlOworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAg
RmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CiAg
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsKIAotdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KLXZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1faW1hZ2U7Ci0gICAgZW5jb2RlciA8PCBtX2ltYWdl
U2l6ZTsKLSAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OwotICAgIGVuY29kZXIgPDwg
bV9zcmNSZWN0OwotICAgIGVuY29kZXIgPDwgbV9vcHRpb25zOwotfQotCi10ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotT3B0aW9uYWw8RHJhd05hdGl2ZUltYWdlPiBEcmF3TmF0aXZlSW1hZ2U6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFJlZjxOYXRpdmVJbWFnZT4+
IGltYWdlOwotICAgIGRlY29kZXIgPj4gaW1hZ2U7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1hZ2VTaXpl
OwotICAgIGRlY29kZXIgPj4gaW1hZ2VTaXplOwotICAgIGlmICghaW1hZ2VTaXplKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5h
dGlvblJlY3Q7Ci0gICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvblJlY3Q7Ci0gICAgaWYgKCFkZXN0
aW5hdGlvblJlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IHNyY1JlY3Q7Ci0gICAgZGVjb2RlciA+PiBzcmNSZWN0OwotICAgIGlmICgh
c3JjUmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPElt
YWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOwotICAgIGRlY29kZXIgPj4gb3B0aW9uczsKLSAg
ICBpZiAoIW9wdGlvbnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1
cm4ge3sgKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVjdCwgKm9w
dGlvbnMgfX07Ci19Ci0KIGNsYXNzIERyYXdQYXR0ZXJuIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGJmM2NiMzQwMTQxZDNl
ZjdhMDE2ZTRlOWVlYzU3Y2FlZWFkZGFjYTguLmU4ODZkMWE0NDgzNGJmOTQwMTI4MzUzMzk2ODA1
MWQ0YTgxOWRlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
QEAgLTE4NywxNCArMTg3LDE5IEBAIEltYWdlRHJhd1Jlc3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0CiAKIHZvaWQgUmVj
b3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaW1hZ2VCdWZmZXIuZmx1
c2hEcmF3aW5nQ29udGV4dCgpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlciht
YWtlUmVmKGltYWdlQnVmZmVyKSk7CisgICAgLy8gRklYTUU6IENhbGwgaW1hZ2VCdWZmZXIuZmx1
c2hEcmF3aW5nQ29udGV4dCgpIHdoZW4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxODc3Mz4gaXMg
Zml4ZWQuCisgICAgaWYgKCFtX2RlbGVnYXRlKQorICAgICAgICBtX2Rpc3BsYXlMaXN0LmNhY2hl
SW1hZ2VCdWZmZXIobWFrZVJlZihpbWFnZUJ1ZmZlcikpOwogICAgIGFwcGVuZDxEcmF3SW1hZ2VC
dWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVj
dCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFn
ZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+
KGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICBpZiAo
IW1fZGVsZWdhdGUpCisgICAgICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShpbWFn
ZSk7CisgICAgZWxzZQorICAgICAgICBtX2RlbGVnYXRlLT5jYWNoZU5hdGl2ZUltYWdlKGltYWdl
KTsKKyAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGU2NTk2YmU4MjJiZTc5YzFl
ZmFjM2U4MTE3M2MzYTIzNDBlNzljMTkuLmZmYTFmZTM4MWQ2YzI0M2Q2YzM1MDdmMjg5N2UxMzlm
NWYyOGU3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNjYs
NiArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyB9CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KICAgICB9
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmlu
ZGV4IDVkZjBlMDA1NzAxOTdkMWM0YTNiZGJiZWEzNzk1MmYyOGRhOTMyNTMuLjA2ZGRmNWMwNzdm
ZGQ2OTI1ZjNmMDJiZjFkZDcyZDhlNzUzMjk3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKQEAgLTM0LDEwICszNCwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBJ
bWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgRGVsZWdhdGUqIGRlbGVnYXRlKQorUmVw
bGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxp
c3QmIGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywg
Y29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIERlbGVnYXRlKiBkZWxlZ2F0
ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5
TGlzdCkKICAgICAsIG1faW1hZ2VCdWZmZXJzKGltYWdlQnVmZmVycyA/ICppbWFnZUJ1ZmZlcnMg
OiBtX2Rpc3BsYXlMaXN0LmltYWdlQnVmZmVycygpKQorICAgICwgbV9uYXRpdmVJbWFnZXMobmF0
aXZlSW1hZ2VzID8gKm5hdGl2ZUltYWdlcyA6IG1fZGlzcGxheUxpc3QubmF0aXZlSW1hZ2VzKCkp
CiAgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogfQpAQCAtNTUsNiArNTYsMTMgQEAgdm9p
ZCBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgICAgIGRyYXdJ
dGVtLmFwcGx5KG1fY29udGV4dCwgKmltYWdlQnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICAKKyAgICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+KCkpIHsKKyAgICAgICAg
YXV0byYgZHJhd0l0ZW0gPSBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7CisgICAgICAgIGlm
IChhdXRvKiBpbWFnZSA9IG1fbmF0aXZlSW1hZ2VzLmdldChkcmF3SXRlbS5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBkcmF3SXRlbS5hcHBseShtX2NvbnRleHQs
ICppbWFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpdGVtLmFwcGx5KG1fY29u
dGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCA5MmVj
Njg4OWMzNWVmODZkM2Y5ZTk0YmVjNjY2ZTdhNzhhZTU5N2NmLi4yYzAxOWVlMGNjOGEzNmUyYzRm
NWQyNTMwMjAwZjg3NWQxNmFkZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJlcGxheWVyKTsKIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlz
dCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxs
cHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBjb25z
dCBOYXRpdmVJbWFnZUhhc2hNYXAqID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxD
bGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKQEAgLTU5LDYgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25zdCBE
aXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAm
IG1faW1hZ2VCdWZmZXJzOworICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbV9uYXRpdmVJ
bWFnZXM7CiAgICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IDY0
YjFlNmJkYWU1ZWNiZjYzMDhlYjczNTRiMzE0Mzk4OTEzNzEyMjUuLjIxZWJhZDYxOTBlZmJjOGY5
ZjUyODg5Mzc1NTcyNWEwNDU1OWM3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC02OSw3ICs2OSw4IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIWRpc3BsYXlMaXN0LmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgY29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKLSAgICAgICAgICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdl
QnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCB0aGlzIH07Cisg
ICAgICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAgICAgICAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1h
Z2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJ
bWFnZXMsIHRoaXMgfTsKICAgICAgICAgICAgIHJlcGxheWVyLnJlcGxheSgpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGQyMzdhNjNiODg2OTY0MjFiYjlh
MjU3ZWY5ZGIyMTdjZmU5ZjljZjguLmRiYWIwMWFkM2MwNWRlZGRiMzNhZmY3MTZhMjI2OTRiMjM5
ZDEwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTE3Miw2ICsxNzIsMTEgQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIEkKICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0
YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKK3sK
KyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdl
KSk7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291
cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7CiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtMjAyLDggKzIwNyw2IEBAIE9wdGlvbmFs
PERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGVjCiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxp
c3Q6OkRyYXdJbWFnZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgICAgIHJldHVybiBk
ZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEsIGxlbmd0
aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVJbWFnZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgogICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3UGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2Nh
dGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAt
MjQ2LDYgKzI0OSw3IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VO
VVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdOYXRpdmVJbWFnZToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xp
bmU6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0OgogICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCmluZGV4IDdhYzk2MjAxMDNlNTdjMDdiYjJlZWUzM2ViZWZiMmM0NWYwMDdkZDEuLjQx
NTkwNGQ2NzczZTAxODJhYWI5YjExYTIwZGRlM2VjNWVmYmYwMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07CiB9
CiBjbGFzcyBGbG9hdFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGVudW0gY2xhc3MgQ29sb3JT
cGFjZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogfQpAQCAt
MTA1LDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25z
dCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGdldElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2Vi
Q29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYp
OworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYp
OwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5k
ZXggZjU1YjAyNmJkYjVlNjNhMTRjZjM2MjE0YTgzZThiYmU4ODYzMWExYi4uNmRkYmVhY2Q2Mjhj
NzcxZDRmYmQ4NzI1NjkyZTk1Y2YxMmM5MjkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsKICAgICBTdWJtaXREaXNwbGF5TGlzdChXZWJLaXQ6
OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0LCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIEZsdXNo
RGlzcGxheUxpc3RBbmRDb21taXQoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSBkaXNw
bGF5TGlzdCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiAgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpB
bHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNS
ZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5j
aHJvbm91cworICAgIENhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVu
Y2UgbmF0aXZlSW1hZ2UpCiAgICAgRGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IDVlMGE2NzQyNzY0ZGZkNDIwYWViYWViYjk4
ZTJkMTBkYWI1NTQ5ZDQuLmMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNmYmRiN2VkNTZkYzRiMmMzNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTQyLDEwICs0MiwxOCBAQCBJbWFnZUJ1ZmZlciogUmVt
b3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1h
Z2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9u
YXRpdmVJbWFnZXMuYWRkKGltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgV1RG
TW92ZShpbWFnZSkpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Cit9CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJl
c291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm47CisgICAgaWYgKG1fbmF0aXZlSW1hZ2VzLnJl
bW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CiAgICAg
Ly8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9y
ZSByZWxlYXNpbmcgaXQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
aAppbmRleCBhNGU0Mjg2NjkyNzlmMWVhZjlkM2U4NTI1NTJiNDI0NDQ5OWE0OWI0Li5jNWRkZTY4
MWI5YmFiNDM3ZGQyN2NlN2JlYWY2ZTU5YWM5ZWIyOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTQ0
LDEyICs0NCwxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoUmVmPFdl
YkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogY2FjaGVk
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2
b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKICAgICB2
b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIAogICAgIGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCYgaW1h
Z2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KKyAgICBjb25zdCBX
ZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJu
IG1fbmF0aXZlSW1hZ2VzOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXJI
YXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCBt
X25hdGl2ZUltYWdlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZGJhNWIyNDI5MDA1ZjJhYWViMGNiODEz
OGU5ODdiMmQxNDJmODhhNy4uYTE3YWU5ZmVmYjkyOTBhMTcwMjgzMDAwMjgyNGJiNjFmOGEzZDBi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTgsNyAr
MjE4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAg
ICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1h
Z2UnLAorICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UnLAogICAgICAgICAn
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENs
aWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMTU3MTNkNWNlOTJk
MjljMTQ5Mzc3NWMyM2ViMWNkZWQ2NmM3ZGI5ZS4uNDYxYWQ4YTc1YzYzOGRhMjEzMWIyMjZjZTE3
YjgwMDIwMGY0M2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCkBAIC0xMTE1LDYgKzExMTUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVm
PE5hdGl2ZUltYWdlPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8TmF0aXZl
SQogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBiaXRtYXAtPmNyZWF0
ZUhhbmRsZShoYW5kbGUpOwogCisgICAgZW5jb2RlciA8PCBpbWFnZS0+cmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKCk7CiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKQEAgLTExMjUsNiAr
MTEyNiwxMCBAQCBPcHRpb25hbDxSZWY8TmF0aXZlSW1hZ2U+PiBBcmd1bWVudENvZGVyPFJlZjxO
YXRpdmVJbWFnZT4+OjpkZWNvZGUoRGVjb2RlciYgZGVjbwogICAgIGlmICghZGlkQ3JlYXRlR3Jh
cGhpY3NDb250ZXh0Lmhhc1ZhbHVlKCkgfHwgIWRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dC52YWx1
ZSgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKQEAgLTExNDEsNiArMTE0Niw3IEBAIE9wdGlvbmFsPFJlZjxOYXRpdmVJbWFnZT4+IEFy
Z3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvCiAgICAg
aWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIG5h
dGl2ZUltYWdlLT5zZXRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICByZXR1cm4gbWFrZVJlZigqbmF0aXZlSW1hZ2UpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDU5ODU3ZmYwN2E1YWMyZjRiMzJjNTY2MzI1
MTRiNDVkZTEwMTk3YjguLmYwYWQwM2YxYWU1YmI3YmZhMzFhNjRjM2Q4MjM2YWM3ZGYwNThkYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0xNzksNiArMTc5LDEyIEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKICAgICB9CiAKKyAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgIH0KKwogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KQpAQCAtMjA3LDggKzIxMyw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHJldHVybiBJ
UEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJh
d0ltYWdlPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlPigpKTsKICAg
ICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRl
eHQ6CiAgICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGl0ZW0uZ2V0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0PigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgICAgIHJl
dHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd05hdGl2ZUltYWdlPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05h
dGl2ZUltYWdlPigpKTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdQYXRoOgogICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2lu
Z2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aD4oaXRlbS5nZXQ8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRoPigpKTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAtMjUxLDYgKzI1NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdE
b3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgogICAgICAgICBjYXNlIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA4ZDg2MTViOGE5NmM3NDQ3MGIwOTQz
N2Q4Y2Q3YzdhMTY1YmM2NWRhLi41NjY2NzljMWIwZjNhYjU3YzY1NzdjOGY3ZDEzZjczMzA2ZDVj
MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0xMDEs
NyArMTAxLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2kKIAogICAgIGlmIChpbWFnZUJ1ZmZl
cikgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVh
dGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOworICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jYWNoZUltYWdlQnVmZmVyKG1ha2VSZWYoKmltYWdlQnVmZmVyKSk7CiAgICAgICAg
IHJldHVybiBpbWFnZUJ1ZmZlcjsKICAgICB9CiAKQEAgLTEyOSw2ICsxMjksMTEgQEAgRGlzcGxh
eUxpc3Q6OkZsdXNoSWRlbnRpZmllciBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZsdXNo
RGlzcGxheUxpc3RBbmRDb20KICAgICByZXR1cm4gc2VudEZsdXNoSWRlbnRpZmllcjsKIH0KIAor
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZl
SW1hZ2UmIGltYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OkNhY2hlTmF0aXZlSW1hZ2UobWFrZVJlZihpbWFnZSkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVh
c2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogewogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LnJlbGVh
c2VJbWFnZUJ1ZmZlcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXggYTU0MmM4MzM1ZTBlNTMzZTA1MTNlNTc2NDI2
MjQ1ZWJiNzY0MWNmOS4uYzFlN2Y1NGYxNjdhMDI0MjdmMTM5ZTVjMjQ5MDJlZGI2NWYzYWM0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC03NCw2ICs3NCw3IEBA
IHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFu
ZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFn
ZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNl
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBib29sIHdhaXRG
b3JJbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKCk7CkBAIC04Niw3ICs4Nyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBpbWFnZUJ1ZmZlckJhY2tlbmRXYXNDcmVhdGVkKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJhY2tlbmRT
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGZsdXNoRGlzcGxheUxpc3RXYXNDb21taXR0ZWQoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKIAotICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTsKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkgeyAqdGhpcyB9OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBSZWZQdHI8U2hhcmVkTWVtb3J5Pj4gbV9zaGFyZWRJdGVtQnVmZmVy
czsKICAgICBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBtX3JlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIHsgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggZmFmZjkyYTA0ZGRmY2JiZDU4
Mzg2ZWM5YmZhYWQ5ZTEzNTVhNTU2Zi4uMWRiYWY1ZTQzZTg1ODgzNjZjNTQ4YTI5ODkxMDA3YjYy
ZDhmMTBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtMjksMTQg
KzI5LDE4IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1
ZmZlciogaW1hZ2VCdWZmZXIpCitSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKKyAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW1hZ2VC
dWZmZXJzLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGltYWdlQnVmZmVyKTsKK30K
Kwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlSW1hZ2VCdWZmZXIoUmVmPFdl
YkNvcmU6OkltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyKQoreworICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9pbWFnZUJ1ZmZlcnMuYWRkKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoKSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKQEAgLTUxLDYgKzU1LDI4IEBAIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQog
Cit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYgaW1hZ2UpCit7CisgICAgbV9uYXRpdmVJbWFnZXMuZW5zdXJlKGltYWdlLnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpLCBbJl0oKSB7CisgICAgICAgIC8vIFRlbGwgdGhlIEdQVSBw
cm9jZXNzIHRvIGNhY2hlIHRoaXMgcmVzb3VyY2UuCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgICAgICAKKyAgICAgICAg
Ly8gU2V0IGl0c2VsZiBhcyBhbiBvYnNlcnZlciB0byBOYXRpdmVJbWFnZSwgc28gcmVsZWFzZU5h
dGl2ZUltYWdlKCkKKyAgICAgICAgLy8gZ2V0cyBjYWxsZWQgd2hlbiBOYXRpdmVJbWFnZSBpcyBi
ZWluZyBkZWxlbGV0ZWQuCisgICAgICAgIGltYWdlLnNldE9ic2VydmVyKHRoaXMpOworICAgICAg
ICByZXR1cm4gbWFrZVJlZihpbWFnZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fbmF0aXZlSW1h
Z2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZS4K
KyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuaAppbmRleCBiZGU4MTVhMTNjMWQ5NTFkNTIwNDkzNjhhODVjOGM0MGNhMTRkY2YzLi45
N2M4N2IxMDRjYzExNTA5ODk1ZWM5OTJlNTllOGUzZDYzMDJjNGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmgKQEAgLTI3LDI3ICsyNywzMSBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLWNsYXNzIEltYWdlQnVmZmVyOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xh
c3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTsKKworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IDogcHVibGljIFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpPYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5KCkgPSBkZWZhdWx0OworICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmKTsKIAotICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkltYWdlQnVmZmVy
Kik7CisgICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4m
Jik7CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgY2Fj
aGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOworCiBwcml2YXRlOgotICAgIHVz
aW5nIFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkltYWdlQnVmZmVyKj47CisgICAgdm9p
ZCByZWxlYXNlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSBvdmVycmlkZTsKIAotICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHlIYXNoTWFwIG1faW1hZ2VC
dWZmZXJzOworICAgIFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsK
KyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413761</attachid>
            <date>2020-11-10 18:37:29 -0800</date>
            <delta_ts>2020-11-10 23:13:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201110183728.patch</filename>
            <type>text/plain</type>
            <size>53137</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTljYzBhYmM0MDE2MjI2
NDhiNDc1YWY5MzMzNjc1ZGJhM2E5ZTI4ZC4uNzZmZWUxYTQ3YjVlMjQxY2NkMWNlOWMxOWEwZjc4
YTQ5ZDg2ZGY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTExLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2lu
ZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggYWxsIHRoZSBkcmF3
SW1hZ2UgZnVuY3Rpb25zIHdpbGwgbm90IGJlIHJlY29yZGVkIGFzIGRpc3BsYXkKKyAgICAgICAg
bGlzdCBpdGVtcy4gSW5zdGVhZCB3ZSBhcmUgZ29pbmcgdG8gbGV0IHRoZW0gcHJvY2VlZCB0aWxs
IHRoZXkgcmVhY2ggbG93ZXIKKyAgICAgICAgbGV2ZWwgY2FsbHMgc3VjaCBhcyBkcmF3TmF0aXZl
SW1hZ2UoKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgIFNhdyBhIGNyYXNoIGluIHRoaXMgZnVu
Y3Rpb24gd2l0aCBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvaW1hZ2UuaHRtbC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgV2UgaGF2ZSB0byBsZXQgdGhlc2Ug
ZnVuY3Rpb24gcHJvY2VlZCB0aWxsIHRoZXkgZW5kIHVwIGNhbGxpbmcgdGhlIAorICAgICAgICBE
T00gcmVuZGVyaW5nIGZvciBTVkdJbWFnZSwgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyBmb3IgcGRm
IGltYWdlIGFuZCAKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlIGZvciB0aGUgcmVzdC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjp+TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6cmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpzZXRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlSW1hZ2U6OnNldE9ic2VydmVyKToKKyAgICAgICAgQWRkIGFuIG9ic2VydmVyIHRvIE5h
dGl2ZUltYWdlIHdob3NlIGpvYiBpcyB0byBvYnNlcnZlIHdoZW4gaXQgaXMgYmVpbmcKKyAgICAg
ICAgZGVzdHJveWVkLiBBZGQgYWxzbyBhbiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgc28g
aXQgY2FuIGJlIHVzZWQgdG8KKyAgICAgICAgcmVmZXJlbmNlIHRoZSBOYXRpdmVJbWFnZSBpbiBh
IE5hdGl2ZUltYWdlSGFzaE1hcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUmVmZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICBUaGlzIGRlZmluaXRpb24gY2FuIGJl
IHVzZWQgdG8gZW5jb2RlL2RlY29kZSBhIFJlZjxOYXRpdmVJbWFnZT4gZm9yIElQQworICAgICAg
ICBtZXNzYWdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6bV9uYXRpdmVJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpjbGVh
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Om5hdGl2ZUlt
YWdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gY2FjaGUgdGhl
IE5hdGl2ZUltYWdlIGluIERpc3BsYXlMaXN0IHN1Y2ggdGhhdCBpdHMKKyAgICAgICAgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGNhbiBiZSB1c2VkIHdoZW4gcmVjb3JkaW5nIERyYXdOYXRp
dmVJbWFnZQorICAgICAgICBhbmQgbV9uYXRpdmVJbWFnZXMgY2FuIGJlIHVzZWQgdG8gYWNjZXNz
IHRoZSBOYXRpdmVJbWFnZSB3aGVuIHJlcGxheWluZworICAgICAgICBiYWNrIERyYXdOYXRpdmVJ
bWFnZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU6OmRlc3Ryb3kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
Ojppc0lubGluZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6IERlbGV0
ZWQuCisgICAgICAgIERyYXdOYXRpdmVJbWFnZSBpcyBhbiBpbmxpbmUgaXRlbSBub3cuIE5vIGVu
Y29kaW5nL2RlY29kaW5nIGlzIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y2FjaGVOYXRp
dmVJbWFnZSk6CisgICAgICAgIEFzayB0aGUgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0
ZSB0byBjYWNoZSB0aGUgTmF0aXZlSW1hZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICBSZXNvbHZl
IHRoZSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgb2YgRHJhd05hdGl2ZUltYWdlIHRvIGEg
TmF0aXZlSW1hZ2UKKyAgICAgICAgZnJvbSB0aGUgbV9uYXRpdmVJbWFnZXMgYmVmb3JlIGRyYXdp
bmcgaXQuCisKIDIwMjAtMTEtMTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBwb3J0IGZvciByZXBsYWNlZCBlbGVtZW50IGJhc2Vs
aW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGU3MTAzNTQyNWQyMzFiZjI1MDFjNDUwOGE5OWYxY2E2ZGRmOTk0MDcu
Ljc0YTJkYjNjN2IxZDY4ZGI1NzExMjA3N2FmNjkwMDkxODc2ZDgzM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjMgQEAKKzIwMjAtMTEtMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDYWNoZSB0aGUgTmF0aXZlSW1hZ2UgaW4gR1BV
IFByb2Nlc3MgYW5kIGFsbG93IHJlZmVyZW5jaW5nIGl0IHdpdGggaXRzIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3NTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSgpIHdpbGwgZW5zdXJlIHRoZSBOYXRpdmVJbWFn
ZSBpcyBjYWNoZWQgYmVmb3JlCisgICAgICAgIHJlY29yZGluZyB0aGUgRHJhd05hdGl2ZUltYWdl
IGl0ZW0gd2l0aCB0aGUgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLgorCisgICAgICAgIEJl
Y2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBpcyBhIHN1cGVyY2xhc3Mgb2YgRGlzcGxheUxp
c3Q6OlJlY29yZGVyOjoKKyAgICAgICAgRGVsZWdhdGUsIGl0IHdpbGwgZW5zdXJlIHRoZSBOYXRp
dmVJbWFnZSBpcyBjYWNoZWQgaW4gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS4KKworICAg
ICAgICBJZiB0aGUgTmF0aXZlSW1hZ2UgaXMgcmVnaXN0ZXJlZCBpbiBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgZm9yIHRoZSBmaXJzdAorICAgICAgICB0aW1lLCBpdCBpcyBnb2luZyB0byBiZSBz
ZW50IGFzIGFuIElQQyBtZXNzYWdlIHRvIEdQVS4gVXBvbiByZWNlaXZpbmcgdGhpcworICAgICAg
ICBtZXNzYWdlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHdpbGwgY2FjaGUgdGhpcyBOYXRpdmVJ
bWFnZSBpbiBpdHMKKyAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZS4gVGhpcyBtZXNzYWdlIGhh
cyB0byBiZSByZWNlaXZlZCBmb3IgYW55IE5hdGl2ZUltYWdlCisgICAgICAgIG9ubHkgb25jZSBm
b3IgaXRzIGVudGlyZSBsaWZlIHRpbWUuCisKKyAgICAgICAgV2hlbiBmbHVzaGluZyB0aGUgRGlz
cGxheUxpc3Qgb2YgYW55IEltYWdlQnVmZmVyLCBSZW1vdGVJbWFnZUJ1ZmZlciB3aWxsCisgICAg
ICAgIGVuc3VyZSB0aGUgTmF0aXZlSW1hZ2VzIGFyZSBjYWNoZWQgaW4gdGhlIFJlbW90ZVJlc291
cmNlQ2FjaGUgYXJlIHBhc3NlZAorICAgICAgICB0byBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgc28g
aXQgY2FuIHVzZSB0aGVtIHRvIGdldCBOYXRpdmVJbWFnZSBmb3IgZXZlcnkKKyAgICAgICAgRHJh
d05hdGl2ZUltYWdlIHdpdGggdGhlIHNhbWUgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGl0
IHdhcyByZWNvcmRlZAorICAgICAgICB3aXRoLgorCisgICAgICAgIFdoZW4gTmF0aXZlSW1hZ2Ug
aXMgYmluZyBkZXN0cm95ZWQsIGl0cyBkZXN0cnVjdG9yIHdpbGwgY2FsbCBpdHMgb2JzZXJ2ZXIK
KyAgICAgICAgdmlydHVhbCBtZXRob2QgcmVsZWFzZU5hdGl2ZUltYWdlKCkuIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSB3aWxsIGJlIGEKKyAgICAgICAgc3VwZXJjbGFzcyBOYXRpdmVJbWFnZTo6
T2JzZXJ2ZXIgc28gaXRzIG92ZXJyaWRpbmcgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLgorICAgICAg
ICBXaGVuIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKCkgaXMg
Y2FsbGVkIGl0IGlzIGdvaW5nCisgICAgICAgIHRvIGRlbGV0ZSB0aGUgTmF0aXZlSW1hZ2UgZnJv
bSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgYW5kIGlzIGdvaW5nIHRvCisgICAgICAgIHNlbmQg
YSBtZXNzYWdlIHRvIEdQVSB0byBkZWxldGUgdGhlIGNvcnJlc3BvbmRpbmcgTmF0aXZlSW1hZ2Ug
ZnJvbQorICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIHZpYSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpuYXRpdmVJbWFnZXMgY29uc3QpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJ
bWFnZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJ
bWFnZT4+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDoKKwogMjAy
MC0xMS0xMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W21hY0NhdGFseXN0XSBBZGQgZW50aXRsZW1lbnQgZm9yIG1lc3NhZ2UgZmlsdGVyaW5nCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCAyNDcyMjNmOGM0ZjMxYTcwYmE0YmFhYTQ1OTM1MTlkMjdmNjQzMzgz
Li5jOGNjZjhmZmExM2I3NjhlMzFhZDc3YzhkYjQ3YzY3YzljYTkxYTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTEyMTYsNiArMTIxNiw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVu
Y2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiYjgyNDg2ZmI5NGU2NWM3OTVhNjc3NzY2YWRmMTM0MThmOWZlNzNmLi44ZGZkMTljNmNlNzI2
MGQ3NjVmYzUzMDk5ZjlkNzAyNTkyYTRjOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY1LDYgKzIxNjUsNyBAQAogCQk3
Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgz
IC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzJBNzNCRUYyNDVBM0Y5MDAwMUM5RDAzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAw
QzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRp
dmVJbWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJC
QUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3
NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGlu
ZVJlY29yZEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc1NTNDRkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3Rvcnku
aCAqLzsgfTsKIAkJNzU3OTNFODQwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFODEwRDBD
RTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oICovOyB9OwpAQCAtOTk3MSw2ICs5OTcyLDcg
QEAKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAv
KiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZVJlZmVy
ZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNDIzRTE3MzI3MDA4
RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAv
KiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsYXRmb3JtSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2
NDA4LDYgKzI2NDEwLDcgQEAKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKKwkJCQk3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1h
Z2VSZWZlcmVuY2UuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5j
cHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlB
ODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAg
LTMzNDM4LDYgKzMzNDQxLDcgQEAKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFt
ZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkg
LyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjZENTZFMzI1M0FFMzY2MDAw
MkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQUI5QTIxMjU1QTlG
REUwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZp
Z2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBhMTJhZjQ1OTA3OWYwNTNjODZjZTk4
Mjk3YmQzNGNiZjlkOWNhMjg3Li4zOGQ5MWE2MzI4NGEzNTU3ZTkyZGEwMmUyYjcxODUyZTE4NjZj
NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCkBAIC00MDksNyArNDA5LDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBCaXRtYXBJbWFnZTo6
c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKEdyYXBoaWNzQ29udGV4dCYgY28KIHsKICNp
ZiBVU0UoQ0cpCiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5n
IGludG8gUERGIGNvbnRleHRzLgotICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQorICAgIGlmICghY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKSB8fCBDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQogICAgICAgICByZXR1cm4gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdDsKIAogICAgIGZsb2F0IHNjYWxlID0gc3RkOjptaW4oZmxvYXQoMSksIHN0
ZDo6bWF4KHNjYWxlRmFjdG9yLndpZHRoKCksIHNjYWxlRmFjdG9yLmhlaWdodCgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAppbmRleCAwMjU4ZDY0MWQ3NjRiOTlhYjFjZDhjZGY5NDI5OGQwZGRmODdiMTQ1Li4zZmVlODU5
ODMyYTdjMDE0MWEwNzkwMWZhOTU0MjhiZGU1MmExYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTc2MCw5ICs3
NjAsNiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbgogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBp
ZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwotCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWlu
dGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmlu
dGVycG9sYXRpb25RdWFsaXR5KCkpOwogICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KQEAgLTc3Miw5ICs3NjksNiBAQCBJbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQotICAg
ICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNv
dXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwotCiAgICAgSW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBv
cHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwogICAgIHJldHVybiBpbWFnZS5kcmF3VGls
ZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25z
KTsKIH0KQEAgLTc4NSw5ICs3NzksNiBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CiAKLSAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3
VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBo
UnVsZSwgdlJ1bGUsIG9wdGlvbnMpOwotCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVzdCBk
byBhIHNjYWxlLgogICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmNwcAppbmRleCAzZjEzZGNhYjM1YWM4YzVhOTgxZGRkOWEzMjA4ODg4NGZk
NGFhMjUzLi45OTZkNzE5N2E2MWNhMTJjN2QzNGYyYTZjN2E0YmUxMGU2ZWNiZjgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCkBAIC00
Miw0ICs0MiwxMCBAQCBOYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYm
IHBsYXRmb3JtSW1hZ2UpCiB7CiB9CiAKK05hdGl2ZUltYWdlOjp+TmF0aXZlSW1hZ2UoKQorewor
ICAgIGlmIChtX29ic2VydmVyKQorICAgICAgICBtX29ic2VydmVyLT5yZWxlYXNlTmF0aXZlSW1h
Z2UobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2Uu
aAppbmRleCBkMDYyYjk3ZmQ0NDRmMGNlYWEyMmJkZDgzOTAwODhjMzMyMDJjMjUyLi4wMzk0MzI3
NDdmOTg1ZmM1OTgwZjk3MWNiMDk2OTI2MGMwNTkxOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNs
dWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUlt
YWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNywyMCArMzksMzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgTmF0aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFnZT4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU5hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikgPSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7
CisgICAgfTsKKwogICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgfk5hdGl2
ZUltYWdlKCk7CisKICAgICBjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUltYWdlOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRT
aXplIHNpemUoKSBjb25zdDsKICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7CiAgICAgQ29sb3Ig
c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSB7IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlcihPYnNlcnZlciog
b2JzZXJ2ZXIpIHsgbV9vYnNlcnZlciA9IG9ic2VydmVyOyB9CiAgICAgdm9pZCBjbGVhclN1Ymlt
YWdlcygpOwogCiBwcml2YXRlOgogICAgIE5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7
CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIG1fcGxhdGZvcm1JbWFnZTsKKyAgICBPYnNlcnZlciog
bV9vYnNlcnZlciB7IG51bGxwdHIgfTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgeyBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI6OmdlbmVyYXRlKCkgfTsKIH07CiAKK3VzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hN
YXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8TmF0aXZlSW1hZ2U+PjsKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ5ZjNiMWFmZTUz
OTBhOWY5YTRhMmJiMzk2NTE4NzljZGZiZjE0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmgKQEAgLTAsMCAr
MSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordXNpbmcgTmF0aXZlSW1hZ2VSZWZlcmVuY2UgPSBSZWY8TmF0aXZlSW1hZ2U+Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCBm
NTA2ZGRmNDk1Mjc1ZGJiNWMwOTAyOGM2MWE0OTM3YTljODc1OTRjLi40NjhhM2Q1NTQ1NjJhOTY3
NjM1ZGMxYjc2OTlmYTI1NjZmNGNhODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAg
LTUyLDYgKzUyLDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcCgpIGNvbnN0CiAKIERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdChEaXNwbGF5TGlzdCYmIG90aGVyKQogICAgIDogbV9pbWFnZUJ1ZmZl
cnMoc3RkOjpleGNoYW5nZShvdGhlci5tX2ltYWdlQnVmZmVycywgeyB9KSkKKyAgICAsIG1fbmF0
aXZlSW1hZ2VzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9uYXRpdmVJbWFnZXMsIHsgfSkpCiAgICAg
LCBtX2l0ZW1zKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pdGVtcywgbnVsbHB0cikpCiAgICAgLCBt
X2RyYXdpbmdJdGVtRXh0ZW50cyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZHJhd2luZ0l0ZW1FeHRl
bnRzLCB7IH0pKQogewpAQCAtNjgsNiArNjksNyBAQCBEaXNwbGF5TGlzdDo6fkRpc3BsYXlMaXN0
KCkgPSBkZWZhdWx0OwogRGlzcGxheUxpc3QmIERpc3BsYXlMaXN0OjpvcGVyYXRvcj0oRGlzcGxh
eUxpc3QmJiBvdGhlcikKIHsKICAgICBtX2ltYWdlQnVmZmVycyA9IHN0ZDo6ZXhjaGFuZ2Uob3Ro
ZXIubV9pbWFnZUJ1ZmZlcnMsIHsgfSk7CisgICAgbV9uYXRpdmVJbWFnZXMgPSBzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fbmF0aXZlSW1hZ2VzLCB7IH0pOwogICAgIG1faXRlbXMgPSBzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1faXRlbXMsIG51bGxwdHIpOwogICAgIG1fZHJhd2luZ0l0ZW1FeHRlbnRzID0g
c3RkOjpleGNoYW5nZShvdGhlci5tX2RyYXdpbmdJdGVtRXh0ZW50cywgeyB9KTsKICAgICByZXR1
cm4gKnRoaXM7CkBAIC03OSw2ICs4MSw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmNsZWFyKCkKICAg
ICAgICAgbV9pdGVtcy0+Y2xlYXIoKTsKICAgICBtX2RyYXdpbmdJdGVtRXh0ZW50cy5jbGVhcigp
OwogICAgIG1faW1hZ2VCdWZmZXJzLmNsZWFyKCk7CisgICAgbV9uYXRpdmVJbWFnZXMuY2xlYXIo
KTsKIH0KIAogYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdz
IGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDM2OGM3
ODA4NzNjYzRlMDQ5ZTAwMWFmMTRmNWE2YTJiZmU0ZGVkNmUuLjE3NDk5YzdmNjc1NWNiOTliOGU1
NDIyNjExMDg1MDE0N2FkYjhiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC03Nyw2ICs3
Nyw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgYXNUZXh0KEFzVGV4dEZsYWdzKSBjb25zdDsKIAog
ICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KKyAgICBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2
ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzOyB9CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQq
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZl
cldyaXRpbmdDbGllbnQqKTsKQEAgLTE1OCw5ICsxNTksMTUgQEAgcHJpdmF0ZToKICAgICAgICAg
bV9pbWFnZUJ1ZmZlcnMuYWRkKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwogICAgIH0KIAorICAgIHZvaWQgY2FjaGVOYXRp
dmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCisgICAgeworICAgICAgICBtX25hdGl2
ZUltYWdlcy5hZGQoaW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3Zl
KGltYWdlKSk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFn
cyhBc1RleHRGbGFncywgSXRlbUhhbmRsZSk7CiAKICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9p
bWFnZUJ1ZmZlcnM7CisgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxPcHRpb25h
bDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJh
d2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcAppbmRleCBjN2Y4YWM4NTgwOTJhMjYwODJlODVjYjhlZGQyNzM0OTY1M2Q0
Yzg1Li5lYzJkNmVhNTUwOGEyMjA4NTI5N2E1NWJjNWMxNzM4MDBjNWE1YzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMzMwLDEwICszMzAsNiBA
QCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICBnZXQ8RHJhd0xpbmVzRm9yVGV4
dD4oKS5+RHJhd0xpbmVzRm9yVGV4dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogewotICAgICAgICBnZXQ8RHJhd05hdGl2ZUlt
YWdlPigpLn5EcmF3TmF0aXZlSW1hZ2UoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDogewogICAgICAgICBnZXQ8RHJhd1BhdGg+KCkufkRyYXdQ
YXRoKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ0MCw2ICs0MzYsMTAgQEAgdm9pZCBJdGVtSGFu
ZGxlOjpkZXN0cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8RHJhd0ltYWdlQnVmZmVyPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3TmF0aXZlSW1hZ2U+
Ojp2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0xpbmU6IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8RHJhd0xpbmU+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBjOThmODQ4MzBlMDEwYWFlZWVjMmZjMmU4
MTNkODBjY2JiNzRmNjkxLi5hMWFkNDYwMWE2ZDkyMmRjOTc4MDA4NGM4MzQxMGZkNWM1ZWVhYWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC0yNjAsNyAr
MjYwLDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3R2x5cGhzOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZToKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3UGF0dGVybjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZToKQEAgLTI5
MCw2ICsyODksNyBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0VsbGlwc2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGlu
ZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKICAgICBjYXNlIEl0ZW1UeXBlOjpFbmRU
cmFuc3BhcmVuY3lMYXllcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRl
eCBjN2VkZDc1OGQ5OGZlMTkyN2FjNTIzNjU0ZTFkZjQ2OTM4YTBmMjdkLi42MTUzMWZiOTI1OTQ2
NmQwMDAxN2QyZWU2MzRlMzBjMmQ5MWJmYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCkBAIC00NjMsMTggKzQ2MywxNCBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0ltYWdlQnVmZmVyJiBpdGVtKQogICAgIHJl
dHVybiB0czsKIH0KIAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKLSAgICA6IG1faW1hZ2UoaW1hZ2UpCi0gICAgLCBtX2ltYWdlU2l6ZShp
bWFnZVNpemUpCi0gICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKLSAgICAsIG1fc3Jj
UmVjdChzcmNSZWN0KQotICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCitOT19SRVRVUk5fRFVFX1RP
X0FTU0VSVCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29u
c3QKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBEcmF3TmF0aXZlSW1h
Z2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3ZvaWQgRHJhd05hdGl2
ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlJiBpbWFn
ZSkgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdl
U2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKKyAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0
LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBhODYxMWM3NjFmMWRhMzg1NmJlNDMyMTM2ZjQx
ZTcyZDE4NTdlNGU5Li4xZTRlMDFkMzllNzU4YmE5OTlmNjlhNDYxM2M2ZTRmOGJiYzQ0NjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEyNzQsNzEgKzEyNzQsMzYgQEAg
cHJpdmF0ZToKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOworICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gdHJ1ZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKTsKKyAgICBEcmF3TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCisgICAgICAgIDog
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQorICAgICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKKyAgICAgICAgLCBtX2Rlc3RpbmF0
aW9uUmVjdChkZXN0UmVjdCkKKyAgICAgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAgICAg
LCBtX29wdGlvbnMob3B0aW9ucykKKyAgICB7CisgICAgfQogCisgICAgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAK
LSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIE5PX1JFVFVSTl9E
VUVfVE9fQVNTRVJUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSYpIGNvbnN0OwogCiAgICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxv
cHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERyYXdOYXRpdmVJbWFnZT4gZGVj
b2RlKERlY29kZXImKTsKLQogcHJpdmF0ZToKLSAgICBSZWY8TmF0aXZlSW1hZ2U+IG1faW1hZ2U7
CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOwogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0
aW5hdGlvblJlY3Q7CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKICAgICBJbWFnZVBhaW50aW5n
T3B0aW9ucyBtX29wdGlvbnM7CiB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBE
cmF3TmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVu
Y29kZXIgPDwgbV9pbWFnZTsKLSAgICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOwotICAgIGVuY29k
ZXIgPDwgbV9kZXN0aW5hdGlvblJlY3Q7Ci0gICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7Ci0gICAg
ZW5jb2RlciA8PCBtX29wdGlvbnM7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRp
b25hbDxEcmF3TmF0aXZlSW1hZ2U+IERyYXdOYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCi17Ci0gICAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gaW1hZ2U7Ci0gICAgZGVj
b2RlciA+PiBpbWFnZTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgT3B0aW9uYWw8RmxvYXRTaXplPiBpbWFnZVNpemU7Ci0gICAgZGVjb2RlciA+
PiBpbWFnZVNpemU7Ci0gICAgaWYgKCFpbWFnZVNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uUmVjdDsKLSAgICBk
ZWNvZGVyID4+IGRlc3RpbmF0aW9uUmVjdDsKLSAgICBpZiAoIWRlc3RpbmF0aW9uUmVjdCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gc3Jj
UmVjdDsKLSAgICBkZWNvZGVyID4+IHNyY1JlY3Q7Ci0gICAgaWYgKCFzcmNSZWN0KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8SW1hZ2VQYWludGluZ09wdGlv
bnM+IG9wdGlvbnM7Ci0gICAgZGVjb2RlciA+PiBvcHRpb25zOwotICAgIGlmICghb3B0aW9ucykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiB7eyAqaW1hZ2UsICpp
bWFnZVNpemUsICpkZXN0aW5hdGlvblJlY3QsICpzcmNSZWN0LCAqb3B0aW9ucyB9fTsKLX0KLQog
Y2xhc3MgRHJhd1BhdHRlcm4gewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5
cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RHJhd1BhdHRlcm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYmYzY2IzNDAxNDFkM2VmN2EwMTZlNGU5ZWVjNTdj
YWVlYWRkYWNhOC4uZTg4NmQxYTQ0ODM0YmY5NDAxMjgzNTMzOTY4MDUxZDRhODE5ZGU1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTg3LDE0ICsxODcs
MTkgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXQKIAogdm9pZCBSZWNvcmRlcjo6ZHJhd0ltYWdl
QnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBpbWFnZUJ1ZmZlci5mbHVzaERyYXdpbmdDb250ZXh0
KCk7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKG1ha2VSZWYoaW1hZ2VCdWZm
ZXIpKTsKKyAgICAvLyBGSVhNRTogQ2FsbCBpbWFnZUJ1ZmZlci5mbHVzaERyYXdpbmdDb250ZXh0
KCkgd2hlbiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjE4NzczPiBpcyBmaXhlZC4KKyAgICBpZiAo
IW1fZGVsZWdhdGUpCisgICAgICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihtYWtl
UmVmKGltYWdlQnVmZmVyKSk7CiAgICAgYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZm
ZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGlmICghbV9kZWxlZ2F0ZSkKKyAg
ICAgICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fZGVsZWdhdGUtPmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgIGFwcGVuZDxE
cmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6
ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTY1OTZiZTgyMmJlNzljMWVmYWMzZTgxMTczYzNhMjM0
MGU3OWMxOS4uZmZhMWZlMzgxZDZjMjQzZDZjMzUwN2YyODk3ZTEzOWY1ZjI4ZTcyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02Niw2ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lk
IHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpIHsgfQogICAgIH07CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggNWRmMGUwMDU3MDE5
N2QxYzRhM2JkYmJlYTM3OTUyZjI4ZGE5MzI1My4uMDZkZGY1YzA3N2ZkZDY5MjVmM2YwMmJmMWRk
NzJkOGU3NTMyOTdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cApAQCAtMzQsMTAgKzM0LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlz
cGxheUxpc3QgewogCi1SZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCogaW1hZ2VCdWZmZXJzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCitSZXBsYXllcjo6UmVwbGF5ZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qs
IGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1hZ2VCdWZmZXJzLCBjb25zdCBOYXRpdmVJbWFn
ZUhhc2hNYXAqIG5hdGl2ZUltYWdlcywgRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250
ZXh0KGNvbnRleHQpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQogICAgICwgbV9p
bWFnZUJ1ZmZlcnMoaW1hZ2VCdWZmZXJzID8gKmltYWdlQnVmZmVycyA6IG1fZGlzcGxheUxpc3Qu
aW1hZ2VCdWZmZXJzKCkpCisgICAgLCBtX25hdGl2ZUltYWdlcyhuYXRpdmVJbWFnZXMgPyAqbmF0
aXZlSW1hZ2VzIDogbV9kaXNwbGF5TGlzdC5uYXRpdmVJbWFnZXMoKSkKICAgICAsIG1fZGVsZWdh
dGUoZGVsZWdhdGUpCiB7CiB9CkBAIC01NSw2ICs1NiwxMyBAQCB2b2lkIFJlcGxheWVyOjphcHBs
eUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICAgICAgZHJhd0l0ZW0uYXBwbHkobV9jb250
ZXh0LCAqaW1hZ2VCdWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlm
IChpdGVtLmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgeworICAgICAgICBhdXRvJiBkcmF3SXRlbSA9
IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKKyAgICAgICAgaWYgKGF1dG8qIGltYWdlID0g
bV9uYXRpdmVJbWFnZXMuZ2V0KGRyYXdJdGVtLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
KSkKKyAgICAgICAgICAgIGRyYXdJdGVtLmFwcGx5KG1fY29udGV4dCwgKmltYWdlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogICAgIGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4IDkyZWM2ODg5YzM1ZWY4NmQzZjll
OTRiZWM2NjZlN2E3OGFlNTk3Y2YuLjJjMDE5ZWUwY2M4YTM2ZTJjNGY1ZDI1MzAyMDBmODc1ZDE2
YWRlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtNDIsNyAr
NDIsNyBAQCBjbGFzcyBSZXBsYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGF5
ZXIpOwogcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
cGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgY29uc3QgSW1hZ2VC
dWZmZXJIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0Jiwg
Y29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IE5hdGl2ZUltYWdlSGFz
aE1hcCogPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB+UmVwbGF5ZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxEaXNw
bGF5TGlzdD4gcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wg
dHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOwpAQCAtNTksNiArNTksNyBAQCBwcml2YXRlOgogICAg
IEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rp
c3BsYXlMaXN0OwogICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgbV9pbWFnZUJ1ZmZlcnM7
CisgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBtX25hdGl2ZUltYWdlczsKICAgICBEZWxl
Z2F0ZSogbV9kZWxlZ2F0ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNjRiMWU2YmRhZTVlY2JmNjMw
OGViNzM1NGIzMTQzOTg5MTM3MTIyNS4uMjFlYmFkNjE5MGVmYmM4ZjlmNTI4ODkzNzU1NzI1YTA0
NTU5Yzc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTY5LDcgKzY5LDggQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIGlmICghZGlzcGxheUxpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjb25zdCBh
dXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpLmltYWdlQnVmZmVycygpOwotICAgICAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQo
KSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsIHRoaXMgfTsKKyAgICAgICAgICAgIGNvbnN0
IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNv
dXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7CisgICAgICAgICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4
dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgdGhpcyB9Owog
ICAgICAgICAgICAgcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKaW5kZXggZDIzN2E2M2I4ODY5NjQyMWJiOWEyNTdlZjlkYjIxN2NmZTlm
OWNmOC4uZGJhYjAxYWQzYzA1ZGVkZGIzM2FmZjcxNmEyMjY5NGIyMzlkMTBjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcApAQCAtMTcyLDYgKzE3MiwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmdldEltYWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgSQogICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlKFdURk1v
dmUoaW1hZ2VEYXRhKSkpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hl
TmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQoreworICAgIG1fcmVtb3RlUmVz
b3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2UpKTsKK30KKwogdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBtX3Jl
bW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CkBAIC0yMDIsOCArMjA3LDYgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWMK
ICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd0ltYWdlPihk
YXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxE
aXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlv
bik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdl
PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd1BhdGg6CiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxh
eUxpc3Q6OkRyYXdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46CkBAIC0yNDYsNiArMjQ5LDcgQEAg
T3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpkZWMKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0VsbGlwc2U6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcjoKKyAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZToKICAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggN2Fj
OTYyMDEwM2U1N2MwN2JiMmVlZTMzZWJlZmIyYzQ1ZjAwN2RkMS4uNDE1OTA0ZDY3NzNlMDE4MmFh
YjliMTFhMjBkZGUzZWM1ZWZiZjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC00Niw2ICs0
Niw3IEBAIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgSXRlbTsKIH0KIGNsYXNzIEZsb2F0U2l6
ZTsKK2NsYXNzIE5hdGl2ZUltYWdlOwogZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsK
IGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiB9CkBAIC0xMDUsNiArMTA2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2
b2lkIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgU2hhcmVkRGlzcGxheUxpc3RIYW5k
bGUmLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNy
Y1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7CisgICAgdm9pZCBjYWNo
ZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJik7CiAgICAgdm9pZCByZWxl
YXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGRpZENyZWF0ZVNoYXJlZEl0ZW1EYXRhKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCBmNTViMDI2YmRiNWU2
M2ExNGNmMzYyMTRhODNlOGJiZTg4NjMxYTFiLi42ZGRiZWFjZDYyOGM3NzFkNGZiZDg3MjU2OTJl
OTVjZjEyYzkyOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpA
QCAtMjcsNiArMjcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJl
ZkNvdW50ZWQgewogICAgIFN1Ym1pdERpc3BsYXlMaXN0KFdlYktpdDo6U2hhcmVkRGlzcGxheUxp
c3RIYW5kbGUgZGlzcGxheUxpc3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRmx1c2hEaXNwbGF5TGlzdEFuZENv
bW1pdChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0LCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
ICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+
IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgQ2Fj
aGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVyZW5jZSBuYXRpdmVJbWFnZSkK
ICAgICBEaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBoYW5kbGUpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5jcHAKaW5kZXggNWUwYTY3NDI3NjRkZmQ0MjBhZWJhZWJiOThlMmQxMGRhYjU1NDlkNC4u
YzMzMmQyZjcwNGUxNTg0ZDZjMGU1Y2ZiZGI3ZWQ1NmRjNGIyYzM2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmNwcApAQCAtNDIsMTAgKzQyLDE4IEBAIEltYWdlQnVmZmVyKiBSZW1vdGVSZXNvdXJjZUNhY2hl
OjpjYWNoZWRJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIKICAgICByZXR1
cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAK
K3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1h
Z2U+JiYgaW1hZ2UpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX25hdGl2ZUltYWdlcy5hZGQo
aW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGltYWdlKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwog
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBp
ZiAobV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAg
ICAgICAgIHJldHVybjsKKyAgICBpZiAobV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKICAgICAvLyBDYWNoaW5nIHRoZSBy
ZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IGE0ZTQyODY2
OTI3OWYxZWFmOWQzZTg1MjU1MmI0MjQ0NDk5YTQ5YjQuLmM1ZGRlNjgxYjliYWI0MzdkZDI3Y2U3
YmVhZjZlNTlhYzllYjI4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtNDQsMTIgKzQ0LDE1IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihSZWY8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+JiYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJ
bWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgCiAg
ICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQorICAgIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7
IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1
ZmZlcnM7CisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCBkYmE1YjI0MjkwMDVmMmFhZWIwY2I4MTM4ZTk4N2IyZDE0MmY4OGE3
Li5hMTdhZTlmZWZiOTI5MGExNzAyODMwMDAyODI0YmI2MWY4YTNkMGJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxOCw3ICsyMTgsNyBAQCBkZWYgdHlw
ZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6
UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpNZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFTZXNzaW9u
SWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZScsCisgICAgICAgICdX
ZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVyZW5jZScsCiAgICAgICAgICdXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5JywKICAg
ICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAxNTcxM2Q1Y2U5MmQyOWMxNDkzNzc1YzIzZWIx
Y2RlZDY2YzdkYjllLi40NjFhZDhhNzVjNjM4ZGEyMTMxYjIyNmNlMTdiODAwMjAwZjQzZjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTExMTUsNiArMTExNSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxOYXRpdmVJCiAgICAgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7
CiAKKyAgICBlbmNvZGVyIDw8IGltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsK
ICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIApAQCAtMTEyNSw2ICsxMTI2LDEwIEBAIE9wdGlv
bmFsPFJlZjxOYXRpdmVJbWFnZT4+IEFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvCiAgICAgaWYgKCFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQuaGFz
VmFsdWUoKSB8fCAhZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0LnZhbHVlKCkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYW5kbGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTE0MSw2
ICsxMTQ2LDcgQEAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gQXJndW1lbnRDb2RlcjxSZWY8
TmF0aXZlSW1hZ2U+Pjo6ZGVjb2RlKERlY29kZXImIGRlY28KICAgICBpZiAoIW5hdGl2ZUltYWdl
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgbmF0aXZlSW1hZ2UtPnNldFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwog
ICAgIHJldHVybiBtYWtlUmVmKCpuYXRpdmVJbWFnZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKaW5kZXggNTk4NTdmZjA3YTVhYzJmNGIzMmM1NjYzMjUxNGI0NWRlMTAxOTdiOC4u
ZjBhZDAzZjFhZTViYjdiZmEzMWE2NGMzZDgyMzZhYzdkZjA1OGRiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKQEAgLTE3OSw2ICsxNzksMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICBk
aXNwbGF5TGlzdC5jbGVhcigpOwogICAgIH0KIAorICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShX
ZWJDb3JlOjpOYXRpdmVJbWFnZSYgaW1hZ2UpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVJ
bWFnZShpbWFnZSk7CisgICAgfQorCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0yMDcsOCAr
MjEzLDYgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5j
b2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2U+KGl0ZW0uZ2V0
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2U+KCkpOwogICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKICAgICAgICAgICAg
IHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdMaW5lc0ZvclRleHQ+KCkpOwotICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rl
cjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1h
Z2U+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U+KCkpOwog
ICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGg6CiAg
ICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd1BhdGg+KCkpOwogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd1BhdHRlcm46CkBAIC0yNTEsNiArMjU1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcjoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdF
bGxpcHNlOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0ltYWdlQnVmZmVyOgorICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3UmVjdDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCmluZGV4IDhkODYxNWI4YTk2Yzc0NDcwYjA5NDM3ZDhjZDdjN2ExNjViYzY1
ZGEuLjU2NjY3OWMxYjBmM2FiNTdjNjU3N2M4ZjdkMTNmNzMzMDZkNWMxZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaQogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNp
emUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgaW1hZ2VCdWZm
ZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7Ci0gICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlSW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1
ZmZlci5nZXQoKSk7CisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlSW1h
Z2VCdWZmZXIobWFrZVJlZigqaW1hZ2VCdWZmZXIpKTsKICAgICAgICAgcmV0dXJuIGltYWdlQnVm
ZmVyOwogICAgIH0KIApAQCAtMTI5LDYgKzEyOSwxMSBAQCBEaXNwbGF5TGlzdDo6Rmx1c2hJZGVu
dGlmaWVyIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Zmx1c2hEaXNwbGF5TGlzdEFuZENv
bQogICAgIHJldHVybiBzZW50Rmx1c2hJZGVudGlmaWVyOwogfQogCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UpCit7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJ
bWFnZShtYWtlUmVmKGltYWdlKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworfQor
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CiB7CiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkucmVsZWFzZUltYWdlQnVmZmVyKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaAppbmRleCBhNTQyYzgzMzVlMGU1MzNlMDUxM2U1NzY0MjYyNDVlYmI3NjQxY2Y5Li5j
MWU3ZjU0ZjE2N2EwMjQyN2YxMzllNWMyNDkwMmVkYjY1ZjNhYzQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTc0LDYgKzc0LDcgQEAgcHVibGljOgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11
bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVj
dCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHN1Ym1p
dERpc3BsYXlMaXN0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2
ZUltYWdlJik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFj
a2VuZFdhc0NyZWF0ZWQoKTsKQEAgLTg2LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlt
YWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dp
Y2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hE
aXNwbGF5TGlzdFdhc0NvbW1pdHRlZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OworICAgIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07
CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIs
IFJlZlB0cjxTaGFyZWRNZW1vcnk+PiBtX3NoYXJlZEl0ZW1CdWZmZXJzOwogICAgIFJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgeyBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNwcAppbmRleCBmYWZmOTJhMDRkZGZjYmJkNTgzODZlYzliZmFhZDllMTM1
NWE1NTZmLi4xZGJhZjVlNDNlODU4ODM2NmM1NDhhMjk4OTEwMDdiNjJkOGYxMGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC0yOSwxNCArMjksMTggQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZl
cikKK1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQor
ICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlcnMuYWRkKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgaW1hZ2VCdWZmZXIpOworfQorCit2b2lkIFJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcihSZWY8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQnVmZmVy
cy5hZGQoaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3Zl
KGltYWdlQnVmZmVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKIH0KIApAQCAtNTEsNiArNTUsMjggQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmUKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKK3ZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3sK
KyAgICBtX25hdGl2ZUltYWdlcy5lbnN1cmUoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCksIFsmXSgpIHsKKyAgICAgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUg
dGhpcyByZXNvdXJjZS4KKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2Fj
aGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgICAgIAorICAgICAgICAvLyBTZXQgaXRzZWxmIGFz
IGFuIG9ic2VydmVyIHRvIE5hdGl2ZUltYWdlLCBzbyByZWxlYXNlTmF0aXZlSW1hZ2UoKQorICAg
ICAgICAvLyBnZXRzIGNhbGxlZCB3aGVuIE5hdGl2ZUltYWdlIGlzIGJlaW5nIGRlbGVsZXRlZC4K
KyAgICAgICAgaW1hZ2Uuc2V0T2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlUmVm
KGltYWdlKTsKKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJl
bGVhc2VOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmICghbV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRlbGwg
dGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCmluZGV4IGJk
ZTgxNWExM2MxZDk1MWQ1MjA0OTM2OGE4NWM4YzQwY2ExNGRjZjMuLjk3Yzg3YjEwNGNjMTE1MDk4
OTVlYzk5MmU1OWU4ZTNkNjMwMmM0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aApAQCAtMjcsMjcgKzI3LDMxIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNs
dWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW1h
Z2VCdWZmZXI7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgeworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworCitjbGFz
cyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
Ok9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKSA9IGRl
ZmF1bHQ7CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSYpOwogCi0gICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKTsKKyAgICB2b2lkIGNh
Y2hlSW1hZ2VCdWZmZXIoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKICAgICBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdl
YkNvcmU6Ok5hdGl2ZUltYWdlJik7CisKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqPjsKKyAgICB2b2lkIHJlbGVhc2VOYXRpdmVJ
bWFnZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOwogCi0g
ICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eUhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIFdlYkNvcmU6Ok5h
dGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKKyAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Cg==
</data>
<flag name="commit-queue"
          id="430444"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413786</attachid>
            <date>2020-11-10 23:01:06 -0800</date>
            <delta_ts>2020-11-11 11:09:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201110230105.patch</filename>
            <type>text/plain</type>
            <size>54267</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTljYzBhYmM0MDE2MjI2
NDhiNDc1YWY5MzMzNjc1ZGJhM2E5ZTI4ZC4uNzZmZWUxYTQ3YjVlMjQxY2NkMWNlOWMxOWEwZjc4
YTQ5ZDg2ZGY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTExLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2lu
ZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggYWxsIHRoZSBkcmF3
SW1hZ2UgZnVuY3Rpb25zIHdpbGwgbm90IGJlIHJlY29yZGVkIGFzIGRpc3BsYXkKKyAgICAgICAg
bGlzdCBpdGVtcy4gSW5zdGVhZCB3ZSBhcmUgZ29pbmcgdG8gbGV0IHRoZW0gcHJvY2VlZCB0aWxs
IHRoZXkgcmVhY2ggbG93ZXIKKyAgICAgICAgbGV2ZWwgY2FsbHMgc3VjaCBhcyBkcmF3TmF0aXZl
SW1hZ2UoKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgIFNhdyBhIGNyYXNoIGluIHRoaXMgZnVu
Y3Rpb24gd2l0aCBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvaW1hZ2UuaHRtbC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgV2UgaGF2ZSB0byBsZXQgdGhlc2Ug
ZnVuY3Rpb24gcHJvY2VlZCB0aWxsIHRoZXkgZW5kIHVwIGNhbGxpbmcgdGhlIAorICAgICAgICBE
T00gcmVuZGVyaW5nIGZvciBTVkdJbWFnZSwgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyBmb3IgcGRm
IGltYWdlIGFuZCAKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlIGZvciB0aGUgcmVzdC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjp+TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6cmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpzZXRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlSW1hZ2U6OnNldE9ic2VydmVyKToKKyAgICAgICAgQWRkIGFuIG9ic2VydmVyIHRvIE5h
dGl2ZUltYWdlIHdob3NlIGpvYiBpcyB0byBvYnNlcnZlIHdoZW4gaXQgaXMgYmVpbmcKKyAgICAg
ICAgZGVzdHJveWVkLiBBZGQgYWxzbyBhbiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgc28g
aXQgY2FuIGJlIHVzZWQgdG8KKyAgICAgICAgcmVmZXJlbmNlIHRoZSBOYXRpdmVJbWFnZSBpbiBh
IE5hdGl2ZUltYWdlSGFzaE1hcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlUmVmZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICBUaGlzIGRlZmluaXRpb24gY2FuIGJl
IHVzZWQgdG8gZW5jb2RlL2RlY29kZSBhIFJlZjxOYXRpdmVJbWFnZT4gZm9yIElQQworICAgICAg
ICBtZXNzYWdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6bV9uYXRpdmVJ
bWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpjbGVh
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Om5hdGl2ZUlt
YWdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gY2FjaGUgdGhl
IE5hdGl2ZUltYWdlIGluIERpc3BsYXlMaXN0IHN1Y2ggdGhhdCBpdHMKKyAgICAgICAgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIGNhbiBiZSB1c2VkIHdoZW4gcmVjb3JkaW5nIERyYXdOYXRp
dmVJbWFnZQorICAgICAgICBhbmQgbV9uYXRpdmVJbWFnZXMgY2FuIGJlIHVzZWQgdG8gYWNjZXNz
IHRoZSBOYXRpdmVJbWFnZSB3aGVuIHJlcGxheWluZworICAgICAgICBiYWNrIERyYXdOYXRpdmVJ
bWFnZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU6OmRlc3Ryb3kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
Ojppc0lubGluZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29kZSk6IERlbGV0
ZWQuCisgICAgICAgIERyYXdOYXRpdmVJbWFnZSBpcyBhbiBpbmxpbmUgaXRlbSBub3cuIE5vIGVu
Y29kaW5nL2RlY29kaW5nIGlzIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6Y2FjaGVOYXRp
dmVJbWFnZSk6CisgICAgICAgIEFzayB0aGUgRGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0
ZSB0byBjYWNoZSB0aGUgTmF0aXZlSW1hZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICBSZXNvbHZl
IHRoZSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgb2YgRHJhd05hdGl2ZUltYWdlIHRvIGEg
TmF0aXZlSW1hZ2UKKyAgICAgICAgZnJvbSB0aGUgbV9uYXRpdmVJbWFnZXMgYmVmb3JlIGRyYXdp
bmcgaXQuCisKIDIwMjAtMTEtMTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBwb3J0IGZvciByZXBsYWNlZCBlbGVtZW50IGJhc2Vs
aW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGU3MTAzNTQyNWQyMzFiZjI1MDFjNDUwOGE5OWYxY2E2ZGRmOTk0MDcu
LjMyNzdhOTA2ZjhiZGUzZGI0N2RjZGExNGE0NTJhYmQ2ZTMwODEwODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjYgQEAKKzIwMjAtMTEtMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDYWNoZSB0aGUgTmF0aXZlSW1hZ2UgaW4gR1BV
IFByb2Nlc3MgYW5kIGFsbG93IHJlZmVyZW5jaW5nIGl0IHdpdGggaXRzIFJlbW90ZVJlc291cmNl
SWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3NTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSgpIHdpbGwgZW5zdXJlIHRoZSBOYXRpdmVJbWFn
ZSBpcyBjYWNoZWQgYmVmb3JlCisgICAgICAgIHJlY29yZGluZyB0aGUgRHJhd05hdGl2ZUltYWdl
IGl0ZW0gd2l0aCB0aGUgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLgorCisgICAgICAgIEJl
Y2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBpcyBhIHN1cGVyY2xhc3Mgb2YgRGlzcGxheUxp
c3Q6OlJlY29yZGVyOjoKKyAgICAgICAgRGVsZWdhdGUsIGl0IHdpbGwgZW5zdXJlIHRoZSBOYXRp
dmVJbWFnZSBpcyBjYWNoZWQgaW4gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS4KKworICAg
ICAgICBJZiB0aGUgTmF0aXZlSW1hZ2UgaXMgcmVnaXN0ZXJlZCBpbiBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgZm9yIHRoZSBmaXJzdAorICAgICAgICB0aW1lLCBpdCBpcyBnb2luZyB0byBiZSBz
ZW50IGFzIGFuIElQQyBtZXNzYWdlIHRvIEdQVS4gVXBvbiByZWNlaXZpbmcgdGhpcworICAgICAg
ICBtZXNzYWdlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHdpbGwgY2FjaGUgdGhpcyBOYXRpdmVJ
bWFnZSBpbiBpdHMKKyAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZS4gVGhpcyBtZXNzYWdlIGhh
cyB0byBiZSByZWNlaXZlZCBmb3IgYW55IE5hdGl2ZUltYWdlCisgICAgICAgIG9ubHkgb25jZSBm
b3IgaXRzIGVudGlyZSBsaWZlIHRpbWUuCisKKyAgICAgICAgV2hlbiBmbHVzaGluZyB0aGUgRGlz
cGxheUxpc3Qgb2YgYW55IEltYWdlQnVmZmVyLCBSZW1vdGVJbWFnZUJ1ZmZlciB3aWxsCisgICAg
ICAgIGVuc3VyZSB0aGUgTmF0aXZlSW1hZ2VzIGFyZSBjYWNoZWQgaW4gdGhlIFJlbW90ZVJlc291
cmNlQ2FjaGUgYXJlIHBhc3NlZAorICAgICAgICB0byBEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgc28g
aXQgY2FuIHVzZSB0aGVtIHRvIGdldCBOYXRpdmVJbWFnZSBmb3IgZXZlcnkKKyAgICAgICAgRHJh
d05hdGl2ZUltYWdlIHdpdGggdGhlIHNhbWUgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGl0
IHdhcyByZWNvcmRlZAorICAgICAgICB3aXRoLgorCisgICAgICAgIFdoZW4gTmF0aXZlSW1hZ2Ug
aXMgYmluZyBkZXN0cm95ZWQsIGl0cyBkZXN0cnVjdG9yIHdpbGwgY2FsbCBpdHMgb2JzZXJ2ZXIK
KyAgICAgICAgdmlydHVhbCBtZXRob2QgcmVsZWFzZU5hdGl2ZUltYWdlKCkuIFJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSB3aWxsIGJlIGEKKyAgICAgICAgc3VwZXJjbGFzcyBOYXRpdmVJbWFnZTo6
T2JzZXJ2ZXIgc28gaXRzIG92ZXJyaWRpbmcgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLgorICAgICAg
ICBXaGVuIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKCkgaXMg
Y2FsbGVkIGl0IGlzIGdvaW5nCisgICAgICAgIHRvIGRlbGV0ZSB0aGUgTmF0aXZlSW1hZ2UgZnJv
bSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgYW5kIGlzIGdvaW5nIHRvCisgICAgICAgIHNlbmQg
YSBtZXNzYWdlIHRvIEdQVSB0byBkZWxldGUgdGhlIGNvcnJlc3BvbmRpbmcgTmF0aXZlSW1hZ2Ug
ZnJvbQorICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIHZpYSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpuYXRpdmVJbWFnZXMgY29uc3QpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJ
bWFnZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJ
bWFnZT4+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eTo6flJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNo
ZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNo
ZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpyZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOgorCiAyMDIwLTExLTEwICBQZXIgQXJuZSBWb2xs
YW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjQ2F0YWx5c3RdIEFkZCBlbnRp
dGxlbWVudCBmb3IgbWVzc2FnZSBmaWx0ZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDI0NzIy
M2Y4YzRmMzFhNzBiYTRiYWFhNDU5MzUxOWQyN2Y2NDMzODMuLmM4Y2NmOGZmYTEzYjc2OGUzMWFk
NzdjOGRiNDdjNjdjOWNhOTFhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTIxNiw2ICsxMjE2
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFVc2FnZUluZm8uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvT3BlbkdMRVNTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJiODI0ODZmYjk0ZTY1Yzc5NWE2
Nzc3NjZhZGYxMzQxOGY5ZmU3M2YuLjhkZmQxOWM2Y2U3MjYwZDc2NWZjNTMwOTlmOWQ3MDI1OTJh
NGM4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTIxNjUsNiArMjE2NSw3IEBACiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4
MyAvKiBSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOUQwNTMw
MjUzMTQyNDMwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUzMTNFMjYw
MDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlE
MDMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJh
bWVSYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzJBQjlBMjEyNTVBOUZERTAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFCOUExRjI1NUE5
RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0MUMg
LyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNr
ZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDcz
RjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5M0U4NDBE
MENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2Fn
ZUV2ZW50LmggKi87IH07CkBAIC05OTcxLDYgKzk5NzIsNyBAQAogCQk3Mjk5QkM2NDIzRDY4NkE2
MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBo
YVByZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlC
QzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5RDA1MkUyNTMx
M0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0Ux
NzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0MDgsNiArMjY0MTAsNyBAQAogCQkJ
CTMxNEJFM0E1MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAq
LywKIAkJCQk3MjUyMzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovLAog
CQkJCTU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAorCQkJCTcy
QUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovLAogCQkJ
CUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBC
MDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5
MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovLApAQCAtMzM0MzgsNiArMzM0NDEsNyBAQAog
CQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcyNkQ1NkUzMjUzQUUzNjYwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNzJBQjlBMjEyNTVBOUZERTAwRTZFQkYxIC8qIE5hdGl2ZUlt
YWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJF
NDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0
NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCmluZGV4IGExMmFmNDU5MDc5ZjA1M2M4NmNlOTgyOTdiZDM0Y2JmOWQ5Y2EyODcuLmQ4
MjRlOGY0NzliMThiYzQ5Y2E3ZWVhMWU5Nzg1YmIyMDRkM2VmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTQwOSw3ICs0MDks
NyBAQCBTdWJzYW1wbGluZ0xldmVsIEJpdG1hcEltYWdlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2Nh
bGVGYWN0b3IoR3JhcGhpY3NDb250ZXh0JiBjbwogewogI2lmIFVTRShDRykKICAgICAvLyBOZXZl
ciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYgY29udGV4dHMuCi0g
ICAgaWYgKENHQ29udGV4dEdldFR5cGUoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkgPT0ga0NH
Q29udGV4dFR5cGVQREYpCisgICAgaWYgKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkgJiYgQ0dD
b250ZXh0R2V0VHlwZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSA9PSBrQ0dDb250ZXh0VHlw
ZVBERikKICAgICAgICAgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAKICAgICBm
bG9hdCBzY2FsZSA9IHN0ZDo6bWluKGZsb2F0KDEpLCBzdGQ6Om1heChzY2FsZUZhY3Rvci53aWR0
aCgpLCBzY2FsZUZhY3Rvci5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMDI1OGQ2NDFkNzY0Yjk5
YWIxY2Q4Y2RmOTQyOThkMGRkZjg3YjE0NS4uM2ZlZTg1OTgzMmE3YzAxNDFhMDc5MDFmYTk1NDI4
YmRlNTJhMWJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03NjAsOSArNzYwLDYgQEAgSW1hZ2VEcmF3UmVzdWx0
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW4KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1h
Z2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0
dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25z
KTsKLQogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
ICAgICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9u
cyk7CiB9CkBAIC03NzIsOSArNzY5LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpE
aWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJh
d1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5n
LCBvcHRpb25zKTsKLQogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKICAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwg
c291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CkBAIC03ODUsOSArNzc5LDYg
QEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1f
aW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zKTsK
LQogICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6
OlN0cmV0Y2hUaWxlKSB7CiAgICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KICAgICAgICAgcmV0
dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKaW5kZXgg
M2YxM2RjYWIzNWFjOGM1YTk4MWRkZDlhMzIwODg4ODRmZDRhYTI1My4uOTk2ZDcxOTdhNjFjYTEy
YzdkMzRmMmE2YzdhNGJlMTBlNmVjYmY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcApAQCAtNDIsNCArNDIsMTAgQEAgTmF0aXZlSW1h
Z2U6Ok5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUltYWdlKQogewogfQog
CitOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAobV9vYnNlcnZlcikKKyAg
ICAgICAgbV9vYnNlcnZlci0+cmVsZWFzZU5hdGl2ZUltYWdlKG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKaW5kZXggZDA2MmI5N2ZkNDQ0ZjBj
ZWFhMjJiZGQ4MzkwMDg4YzMzMjAyYzI1Mi4uMDM5NDMyNzQ3Zjk4NWZjNTk4MGY5NzFjYjA5Njky
NjBjMDU5MTkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZS5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsMjAg
KzM5LDM3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5hdGl2ZUltYWdlIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKKyAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VO
YXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKKyAgICBwcm90ZWN0
ZWQ6CisgICAgICAgIE9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgIH07CisKICAgICBzdGF0aWMg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGUoUGxhdGZvcm1JbWFnZVB0
ciYmKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgpOworCiAgICAgY29uc3Qg
UGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1JbWFnZTsgfQorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcjsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNBbHBoYSgpIGNvbnN0OwogICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigp
IGNvbnN0OwogCisgICAgdm9pZCBzZXRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgeyBtX3Jl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsg
fQorICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXIg
PSBvYnNlcnZlcjsgfQogICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMoKTsKIAogcHJpdmF0ZToKICAg
ICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOwogCiAgICAgUGxhdGZvcm1JbWFnZVB0
ciBtX3BsYXRmb3JtSW1hZ2U7CisgICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXIgeyBudWxscHRyIH07
CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHsgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9Owog
Cit1c2luZyBOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgUmVmPE5hdGl2ZUltYWdlPj47CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUmVm
ZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJl
ZmVyZW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OWYzYjFhZmU1MzkwYTlmOWE0YTJiYjM5NjUxODc5Y2Rm
YmYxNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJOYXRpdmVJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIE5hdGl2ZUlt
YWdlUmVmZXJlbmNlID0gUmVmPE5hdGl2ZUltYWdlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggZjUwNmRkZjQ5NTI3NWRiYjVjMDkwMjhj
NjFhNDkzN2E5Yzg3NTk0Yy4uNDY4YTNkNTU0NTYyYTk2NzYzNWRjMWI3Njk5ZmEyNTY2ZjRjYTg3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC01Miw2ICs1Miw3IEBAIHZvaWQgRGlz
cGxheUxpc3Q6OmR1bXAoKSBjb25zdAogCiBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QoRGlzcGxh
eUxpc3QmJiBvdGhlcikKICAgICA6IG1faW1hZ2VCdWZmZXJzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIu
bV9pbWFnZUJ1ZmZlcnMsIHsgfSkpCisgICAgLCBtX25hdGl2ZUltYWdlcyhzdGQ6OmV4Y2hhbmdl
KG90aGVyLm1fbmF0aXZlSW1hZ2VzLCB7IH0pKQogICAgICwgbV9pdGVtcyhzdGQ6OmV4Y2hhbmdl
KG90aGVyLm1faXRlbXMsIG51bGxwdHIpKQogICAgICwgbV9kcmF3aW5nSXRlbUV4dGVudHMoc3Rk
OjpleGNoYW5nZShvdGhlci5tX2RyYXdpbmdJdGVtRXh0ZW50cywgeyB9KSkKIHsKQEAgLTY4LDYg
KzY5LDcgQEAgRGlzcGxheUxpc3Q6On5EaXNwbGF5TGlzdCgpID0gZGVmYXVsdDsKIERpc3BsYXlM
aXN0JiBEaXNwbGF5TGlzdDo6b3BlcmF0b3I9KERpc3BsYXlMaXN0JiYgb3RoZXIpCiB7CiAgICAg
bV9pbWFnZUJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faW1hZ2VCdWZmZXJzLCB7IH0p
OworICAgIG1fbmF0aXZlSW1hZ2VzID0gc3RkOjpleGNoYW5nZShvdGhlci5tX25hdGl2ZUltYWdl
cywgeyB9KTsKICAgICBtX2l0ZW1zID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zLCBudWxs
cHRyKTsKICAgICBtX2RyYXdpbmdJdGVtRXh0ZW50cyA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9k
cmF3aW5nSXRlbUV4dGVudHMsIHsgfSk7CiAgICAgcmV0dXJuICp0aGlzOwpAQCAtNzksNiArODEs
NyBAQCB2b2lkIERpc3BsYXlMaXN0OjpjbGVhcigpCiAgICAgICAgIG1faXRlbXMtPmNsZWFyKCk7
CiAgICAgbV9kcmF3aW5nSXRlbUV4dGVudHMuY2xlYXIoKTsKICAgICBtX2ltYWdlQnVmZmVycy5j
bGVhcigpOworICAgIG1fbmF0aXZlSW1hZ2VzLmNsZWFyKCk7CiB9CiAKIGJvb2wgRGlzcGxheUxp
c3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAzNjhjNzgwODczY2M0ZTA0OWUwMDFhZjE0ZjVh
NmEyYmZlNGRlZDZlLi4xNzQ5OWM3ZjY3NTVjYjk5YjhlNTQyMjYxMTA4NTAxNDdhZGI4Yjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIGFzVGV4dChBc1RleHRGbGFncykgY29uc3Q7CiAKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhh
c2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9Cisg
ICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMoKSBjb25zdCB7IHJldHVy
biBtX25hdGl2ZUltYWdlczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVm
ZmVyQ2xpZW50KEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRJdGVtQnVmZmVyQ2xpZW50KEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50Kik7CkBAIC0x
NTgsOSArMTU5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIG1faW1hZ2VCdWZmZXJzLmFkZChpbWFn
ZUJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFdURk1vdmUoaW1hZ2VCdWZm
ZXIpKTsKICAgICB9CiAKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdl
PiYmIGltYWdlKQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVJbWFnZXMuYWRkKGltYWdlLT5yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbWFnZSkpOworICAgIH0KKyAgICAK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5k
bGUpOwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIE5hdGl2
ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1
ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8T3B0aW9uYWw8RmxvYXRSZWN0Pj4gbV9kcmF3aW5n
SXRlbUV4dGVudHM7CiAgICAgYm9vbCBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyB7IHRydWUg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYzdm
OGFjODU4MDkyYTI2MDgyZTg1Y2I4ZWRkMjczNDk2NTNkNGM4NS4uZWMyZDZlYTU1MDhhMjIwODUy
OTdhNTViYzVjMTczODAwYzVhNWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKQEAgLTMzMCwxMCArMzMwLDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0
cm95KCkKICAgICAgICAgZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkufkRyYXdMaW5lc0ZvclRleHQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6IHsKLSAgICAgICAgZ2V0PERyYXdOYXRpdmVJbWFnZT4oKS5+RHJhd05hdGl2ZUltYWdl
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6
IHsKICAgICAgICAgZ2V0PERyYXdQYXRoPigpLn5EcmF3UGF0aCgpOwogICAgICAgICByZXR1cm47
CkBAIC00NDAsNiArNDM2LDEwIEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdJbWFnZUJ1
ZmZlcj46OnZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOworICAgICAgICByZXR1
cm47CisgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdMaW5lPjo6dmFsdWUp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5j
cHAKaW5kZXggYzk4Zjg0ODMwZTAxMGFhZWVlYzJmYzJlODEzZDgwY2NiYjc0ZjY5MS4uYTFhZDQ2
MDFhNmQ5MjJkYzk3ODAwODRjODM0MTBmZDVjNWVlYWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcApAQCAtMjYwLDcgKzI2MCw2IEBAIGJvb2wgaXNJbmxpbmVJ
dGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6CkBAIC0yOTAsNiArMjg5LDcgQEAgYm9vbCBpc0lu
bGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRv
Y3VtZW50TWFya2VyOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1JlY3Q6CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggYzdlZGQ3NThkOThmZTE5MjdhYzUy
MzY1NGUxZGY0NjkzOGEwZjI3ZC4uNjE1MzFmYjkyNTk0NjZkMDAwMTdkMmVlNjM0ZTMwYzJkOTFi
ZmFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDYzLDE4ICs0
NjMsMTQgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRp
dmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi0gICAgOiBt
X2ltYWdlKGltYWdlKQotICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQotICAgICwgbV9kZXN0
aW5hdGlvblJlY3QoZGVzdFJlY3QpCi0gICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKLSAgICAsIG1f
b3B0aW9ucyhvcHRpb25zKQorTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0Cit2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSYgaW1hZ2UpIGNvbnN0CiB7Ci0gICAgY29udGV4
dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0
LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1h
Z2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMp
OwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
aW5kZXggYTg2MTFjNzYxZjFkYTM4NTZiZTQzMjEzNmY0MWU3MmQxODU3ZTRlOS4uMWU0ZTAxZDM5
ZTc1OGJhOTk5ZjY5YTQ2MTNjNmU0ZjhiYmM0NDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCkBAIC0xMjc0LDcxICsxMjc0LDM2IEBAIHByaXZhdGU6CiBjbGFzcyBEcmF3TmF0
aXZlSW1hZ2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5
cGUgPSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxp
bmVJdGVtID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9
IHRydWU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
LCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7Cisg
ICAgRHJhd05hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgICAgICA6IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgLCBtX2ltYWdlU2l6
ZShpbWFnZVNpemUpCisgICAgICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCisgICAg
ICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCisg
ICAgeworICAgIH0KIAorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjsgfQogICAgIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zcmNSZWN0OyB9CiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QoKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogCi0gICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdDsKKyAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0
JiwgTmF0aXZlSW1hZ2UmKSBjb25zdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFs
Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBPcHRpb25hbDxEcmF3TmF0aXZlSW1hZ2U+IGRlY29kZShEZWNvZGVyJik7Ci0KIHByaXZh
dGU6Ci0gICAgUmVmPE5hdGl2ZUltYWdlPiBtX2ltYWdlOworICAgIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICBGbG9hdFNpemUg
bV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OwogICAgIEZsb2F0
UmVjdCBtX3NyY1JlY3Q7CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsK
IAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1faW1hZ2U7Ci0gICAg
ZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKLSAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0
OwotICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OwotICAgIGVuY29kZXIgPDwgbV9vcHRpb25zOwot
fQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RHJhd05hdGl2ZUltYWdlPiBE
cmF3TmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFs
PFJlZjxOYXRpdmVJbWFnZT4+IGltYWdlOwotICAgIGRlY29kZXIgPj4gaW1hZ2U7Ci0gICAgaWYg
KCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEZs
b2F0U2l6ZT4gaW1hZ2VTaXplOwotICAgIGRlY29kZXIgPj4gaW1hZ2VTaXplOwotICAgIGlmICgh
aW1hZ2VTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBkZXN0aW5hdGlvblJlY3Q7Ci0gICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvblJl
Y3Q7Ci0gICAgaWYgKCFkZXN0aW5hdGlvblJlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHNyY1JlY3Q7Ci0gICAgZGVjb2RlciA+PiBz
cmNSZWN0OwotICAgIGlmICghc3JjUmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIE9wdGlvbmFsPEltYWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOwotICAgIGRlY29k
ZXIgPj4gb3B0aW9uczsKLSAgICBpZiAoIW9wdGlvbnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25S
ZWN0LCAqc3JjUmVjdCwgKm9wdGlvbnMgfX07Ci19Ci0KIGNsYXNzIERyYXdQYXR0ZXJuIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmlu
ZGV4IGJmM2NiMzQwMTQxZDNlZjdhMDE2ZTRlOWVlYzU3Y2FlZWFkZGFjYTguLmU4ODZkMWE0NDgz
NGJmOTQwMTI4MzUzMzk2ODA1MWQ0YTgxOWRlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKQEAgLTE4NywxNCArMTg3LDE5IEBAIEltYWdlRHJhd1Jlc3VsdCBS
ZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0g
ICAgaW1hZ2VCdWZmZXIuZmx1c2hEcmF3aW5nQ29udGV4dCgpOwotICAgIG1fZGlzcGxheUxpc3Qu
Y2FjaGVJbWFnZUJ1ZmZlcihtYWtlUmVmKGltYWdlQnVmZmVyKSk7CisgICAgLy8gRklYTUU6IENh
bGwgaW1hZ2VCdWZmZXIuZmx1c2hEcmF3aW5nQ29udGV4dCgpIHdoZW4gPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzIxODc3Mz4gaXMgZml4ZWQuCisgICAgaWYgKCFtX2RlbGVnYXRlKQorICAgICAgICBt
X2Rpc3BsYXlMaXN0LmNhY2hlSW1hZ2VCdWZmZXIobWFrZVJlZihpbWFnZUJ1ZmZlcikpOwogICAg
IGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3Jk
ZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGFwcGVu
ZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKTsKKyAgICBpZiAoIW1fZGVsZWdhdGUpCisgICAgICAgIG1fZGlzcGxheUxpc3QuY2Fj
aGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgZWxzZQorICAgICAgICBtX2RlbGVnYXRlLT5jYWNo
ZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4
IGU2NTk2YmU4MjJiZTc5YzFlZmFjM2U4MTE3M2MzYTIzNDBlNzljMTkuLmZmYTFmZTM4MWQ2YzI0
M2Q2YzM1MDdmMjg5N2UxMzlmNWYyOGU3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRl
bGVnYXRlKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJ
dGVtVHlwZSkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0
ZW1UeXBlKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZl
SW1hZ2UmKSB7IH0KICAgICB9OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwCmluZGV4IDVkZjBlMDA1NzAxOTdkMWM0YTNiZGJiZWEzNzk1MmYyOGRh
OTMyNTMuLjA2ZGRmNWMwNzdmZGQ2OTI1ZjNmMDJiZjFkZDcyZDhlNzUzMjk3ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTM0LDEwICszNCwxMSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVwbGF5ZXI6
OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRp
c3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgRGVsZWdh
dGUqIGRlbGVnYXRlKQorUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hN
YXAqIGltYWdlQnVmZmVycywgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMs
IERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9k
aXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKICAgICAsIG1faW1hZ2VCdWZmZXJzKGltYWdlQnVmZmVy
cyA/ICppbWFnZUJ1ZmZlcnMgOiBtX2Rpc3BsYXlMaXN0LmltYWdlQnVmZmVycygpKQorICAgICwg
bV9uYXRpdmVJbWFnZXMobmF0aXZlSW1hZ2VzID8gKm5hdGl2ZUltYWdlcyA6IG1fZGlzcGxheUxp
c3QubmF0aXZlSW1hZ2VzKCkpCiAgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogfQpAQCAt
NTUsNiArNTYsMTMgQEAgdm9pZCBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkK
ICAgICAgICAgICAgIGRyYXdJdGVtLmFwcGx5KG1fY29udGV4dCwgKmltYWdlQnVmZmVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1h
Z2U+KCkpIHsKKyAgICAgICAgYXV0byYgZHJhd0l0ZW0gPSBpdGVtLmdldDxEcmF3TmF0aXZlSW1h
Z2U+KCk7CisgICAgICAgIGlmIChhdXRvKiBpbWFnZSA9IG1fbmF0aXZlSW1hZ2VzLmdldChkcmF3
SXRlbS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBkcmF3SXRl
bS5hcHBseShtX2NvbnRleHQsICppbWFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBpdGVtLmFwcGx5KG1fY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaAppbmRleCA5MmVjNjg4OWMzNWVmODZkM2Y5ZTk0YmVjNjY2ZTdhNzhhZTU5N2NmLi4y
YzAxOWVlMGNjOGEzNmUyYzRmNWQyNTMwMjAwZjg3NWQxNmFkZTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVwbGF5ZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlcGxheWVyKTsKIHB1YmxpYzoKICAgICBjbGFz
cyBEZWxlZ2F0ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRy
LCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqID0gbnVsbHB0ciwgRGVsZWdh
dGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxheShjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNl
KTsKQEAgLTU5LDYgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29u
dGV4dDsKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBJ
bWFnZUJ1ZmZlckhhc2hNYXAmIG1faW1hZ2VCdWZmZXJzOworICAgIGNvbnN0IE5hdGl2ZUltYWdl
SGFzaE1hcCYgbV9uYXRpdmVJbWFnZXM7CiAgICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oCmluZGV4IDY0YjFlNmJkYWU1ZWNiZjYzMDhlYjczNTRiMzE0Mzk4OTEzNzEyMjUu
LjIxZWJhZDYxOTBlZmJjOGY5ZjUyODg5Mzc1NTcyNWEwNDU1OWM3OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBA
IC02OSw3ICs2OSw4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIWRpc3BsYXlMaXN0
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgY29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMo
KTsKLSAgICAgICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VC
dWZmZXJzLCB0aGlzIH07CisgICAgICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdl
cygpOworICAgICAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVy
IHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFn
ZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsIHRoaXMgfTsKICAgICAgICAgICAgIHJlcGxheWVyLnJl
cGxheSgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGQy
MzdhNjNiODg2OTY0MjFiYjlhMjU3ZWY5ZGIyMTdjZmU5ZjljZjguLmRiYWIwMWFkM2MwNWRlZGRi
MzNhZmY3MTZhMjI2OTRiMjM5ZDEwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTE3
Miw2ICsxNzIsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEo
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIEkKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihJUEM6OkltYWdlRGF0YVJlZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0KIAor
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJ
bWFnZT4mJiBpbWFnZSkKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVJ
bWFnZShXVEZNb3ZlKGltYWdlKSk7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVh
c2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtMjAyLDgg
KzIwNyw2IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9S
RVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdJbWFnZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2Nh
dGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6
CiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0Zv
clRleHQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRD
cmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVM
b2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgogICAg
ICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3UGF0aD4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOgpAQCAtMjQ2LDYgKzI0OSw3IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJ
dGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVj
CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXI6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdSZWN0OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lM
YXllcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDdhYzk2MjAxMDNlNTdjMDdiYjJlZWUzM2Vi
ZWZiMmM0NWYwMDdkZDEuLjQxNTkwNGQ2NzczZTAxODJhYWI5YjExYTIwZGRlM2VjNWVmYmYwMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5TGlz
dDsKIGNsYXNzIEl0ZW07CiB9CiBjbGFzcyBGbG9hdFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZTsK
IGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01v
ZGUgOiBib29sOwogfQpAQCAtMTA1LDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdWJt
aXREaXNwbGF5TGlzdChjb25zdCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0QW5k
Q29tbWl0KGNvbnN0IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UmJik+JiYpOworICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29y
ZTo6TmF0aXZlSW1hZ2U+JiYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVTaGFy
ZWRJdGVtRGF0YShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4KaW5kZXggZjU1YjAyNmJkYjVlNjNhMTRjZjM2MjE0YTgzZThiYmU4ODYz
MWExYi4uNmRkYmVhY2Q2MjhjNzcxZDRmYmQ4NzI1NjkyZTk1Y2YxMmM5MjkzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDcgQEAgbWVzc2Fn
ZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIHsKICAgICBTdWJtaXRE
aXNwbGF5TGlzdChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0LCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQogICAgIEZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoV2ViS2l0OjpTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZSBkaXNwbGF5TGlzdCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRl
bnRpZmllciBmbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgR2V0SW1hZ2VEYXRhKGVudW06
dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2Vi
Q29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVu
Y2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cworICAgIENhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6
TmF0aXZlSW1hZ2VSZWZlcmVuY2UgbmF0aXZlSW1hZ2UpCiAgICAgRGlkQ3JlYXRlU2hhcmVkSXRl
bURhdGEoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlKQogICAgIFJlbGVhc2VS
ZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IDVlMGE2NzQy
NzY0ZGZkNDIwYWViYWViYjk4ZTJkMTBkYWI1NTQ5ZDQuLmMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNm
YmRiN2VkNTZkYzRiMmMzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTQyLDEwICs0MiwxOCBA
QCBJbWFnZUJ1ZmZlciogUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2Fj
aGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQoreworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9uYXRpdmVJbWFnZXMuYWRkKGltYWdlLT5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbWFnZSkpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJzLnJlbW92
ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm47CisgICAgaWYg
KG1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAg
ICAgICByZXR1cm47CiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBo
YXZlIGhhcHBlbmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuaAppbmRleCBhNGU0Mjg2NjkyNzlmMWVhZjlkM2U4NTI1NTJiNDI0
NDQ5OWE0OWI0Li5jNWRkZTY4MWI5YmFiNDM3ZGQyN2NlN2JlYWY2ZTU5YWM5ZWIyOGU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmgKQEAgLTQ0LDEyICs0NCwxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhY2hl
SW1hZ2VCdWZmZXIoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmKTsKICAgICBXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2
ZUltYWdlPiYmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIAogICAgIGNvbnN0IFdlYkNvcmU6OkltYWdl
QnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZl
cnM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdl
cygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzOyB9CiAKIHByaXZhdGU6CiAgICAgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIFdlYkNvcmU6Ok5h
dGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZGJhNWIy
NDI5MDA1ZjJhYWViMGNiODEzOGU5ODdiMmQxNDJmODhhNy4uYTE3YWU5ZmVmYjkyOTBhMTcwMjgz
MDAwMjgyNGJiNjFmOGEzZDBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CkBAIC0yMTgsNyArMjE4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2Zvcndh
cmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29u
dGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAn
V2ViQ29yZTo6TmF0aXZlSW1hZ2UnLAorICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZl
cmVuY2UnLAogICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVy
SUQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggMTU3MTNkNWNlOTJkMjljMTQ5Mzc3NWMyM2ViMWNkZWQ2NmM3ZGI5ZS4uNDYxYWQ4YTc1
YzYzOGRhMjEzMWIyMjZjZTE3YjgwMDIwMGY0M2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMTE1LDYgKzExMTUsNyBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBSZWY8TmF0aXZlSQogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsK
ICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogCisgICAgZW5jb2RlciA8PCBpbWFn
ZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CiAgICAgZW5jb2RlciA8PCBoYW5kbGU7
CiB9CiAKQEAgLTExMjUsNiArMTEyNiwxMCBAQCBPcHRpb25hbDxSZWY8TmF0aXZlSW1hZ2U+PiBB
cmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUoRGVjb2RlciYgZGVjbwogICAg
IGlmICghZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0Lmhhc1ZhbHVlKCkgfHwgIWRpZENyZWF0ZUdy
YXBoaWNzQ29udGV4dC52YWx1ZSgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisg
ICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgCiAgICAgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTExNDEsNiArMTE0Niw3IEBAIE9wdGlvbmFsPFJl
ZjxOYXRpdmVJbWFnZT4+IEFyZ3VtZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvCiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAorICAgIG5hdGl2ZUltYWdlLT5zZXRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICByZXR1cm4gbWFrZVJlZigqbmF0
aXZlSW1hZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDU5ODU3ZmYw
N2E1YWMyZjRiMzJjNTY2MzI1MTRiNDVkZTEwMTk3YjguLmY5Y2MzNzRmNGE2OTZjZWNkNDhhMDA1
NTQ3NzAyMDBmNTk0ZWY5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC02MCw2
ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgp
OworICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5KCkucmVsZWFzZUltYWdlQnVmZmVyKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCkBAIC04
MCw2ICs4MSw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eShtYWtlV2Vha1B0cihyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KTsKKyAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgp
LmNhY2hlSW1hZ2VCdWZmZXIoKnRoaXMpOworCiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlz
cGxheUxpc3QoKS5zZXRJdGVtQnVmZmVyQ2xpZW50KHRoaXMpOwogICAgICAgICBtX2RyYXdpbmdD
b250ZXh0LmRpc3BsYXlMaXN0KCkuc2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGZhbHNlKTsK
ICAgICB9CkBAIC0xNzksNiArMTgyLDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgZGlzcGxheUxp
c3QuY2xlYXIoKTsKICAgICB9CiAKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6
TmF0aXZlSW1hZ2UmIGltYWdlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1h
Z2UpOworICAgIH0KKwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxl
IGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQpAQCAtMjA3LDggKzIxNiw2IEBA
IHByb3RlY3RlZDoKICAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmds
ZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlPihpdGVtLmdldDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlPigpKTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgICAgICAgICByZXR1cm4g
SVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdMaW5lc0ZvclRleHQ+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNG
b3JUZXh0PigpKTsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29k
ZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlPihpdGVt
LmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlPigpKTsKICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgogICAgICAgICAg
ICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3UGF0aD4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRo
PigpKTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQ
YXR0ZXJuOgpAQCAtMjUxLDYgKzI1OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToK
ICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1
ZmZlcjoKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdMaW5lOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd1JlY3Q6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpF
bmRUcmFuc3BhcmVuY3lMYXllcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNwcAppbmRleCA4ZDg2MTViOGE5NmM3NDQ3MGIwOTQzN2Q4Y2Q3YzdhMTY1YmM2NWRhLi5hMzY3
Mzg5OGE4NDJkMDE1NGRjNDRlMjE5ZjA5NGU1MGM5NGYyYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0xMDEsNyArMTAxLDYgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2kKIAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5k
ZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGltYWdlQnVmZmVyLT5yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
OwotICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZUltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0
KCkpOwogICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC0xMjksOSArMTI4
LDEzIEBAIERpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpmbHVzaERpc3BsYXlMaXN0QW5kQ29tCiAgICAgcmV0dXJuIHNlbnRGbHVzaElkZW50
aWZpZXI7CiB9CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoaW1hZ2UpKSwgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBtX3JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5yZWxlYXNlSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3Rl
UmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmlu
ZGV4IGE1NDJjODMzNWUwZTUzM2UwNTEzZTU3NjQyNjI0NWViYjc2NDFjZjkuLmMxZTdmNTRmMTY3
YTAyNDI3ZjEzOWU1YzI0OTAyZWRiNjVmM2FjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc3VibWl0RGlzcGxheUxp
c3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1
c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsK
ICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3Jl
YXRlZCgpOwpAQCAtODYsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBXZWJDb3JlOjpDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0
V2FzQ29tbWl0dGVkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKLSAgICBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkgbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk7CisgICAgUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKICAgICBIYXNo
TWFwPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVmUHRyPFNo
YXJlZE1lbW9yeT4+IG1fc2hhcmVkSXRlbUJ1ZmZlcnM7CiAgICAgUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY3BwCmluZGV4IGZhZmY5MmEwNGRkZmNiYmQ1ODM4NmVjOWJmYWFkOWUxMzU1YTU1NmYuLmEy
MzkwYjNkYmRlYjA0MjZhMDllOGQzYjE5OTEyMmZkNGE0YzIwNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTI5LDE0ICsyOSwxOCBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNh
Y2hlSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQorUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgOiBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiB7
Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2ltYWdlQnVmZmVycy5hZGQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
cikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW1hZ2VCdWZmZXJzLmFkZChpbWFnZUJ1ZmZl
ci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgJmltYWdlQnVmZmVyKTsKICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQogCkBAIC01MSw2
ICs1NSwyOCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVm
ZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogICAgIEFTU0VSVF9VTlVTRUQoZm91
bmQsIGZvdW5kKTsKIH0KIAordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQoreworICAgIG1fbmF0aXZlSW1hZ2VzLmVuc3Vy
ZShpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgeworICAgICAgICAv
LyBTZXQgaXRzZWxmIGFzIGFuIG9ic2VydmVyIHRvIE5hdGl2ZUltYWdlLCBzbyByZWxlYXNlTmF0
aXZlSW1hZ2UoKQorICAgICAgICAvLyBnZXRzIGNhbGxlZCB3aGVuIE5hdGl2ZUltYWdlIGlzIGJl
aW5nIGRlbGVsZXRlZC4KKyAgICAgICAgaW1hZ2Uuc2V0T2JzZXJ2ZXIodGhpcyk7CisKKyAgICAg
ICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUgdGhpcyByZXNvdXJjZS4KKyAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7
CisgICAgICAgIHJldHVybiAmaW1hZ2U7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fbmF0aXZlSW1h
Z2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZS4K
KyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuaAppbmRleCBiZGU4MTVhMTNjMWQ5NTFkNTIwNDkzNjhhODVjOGM0MGNhMTRkY2YzLi5i
NzllMThjYmM2MDkxNzRjYmQxYjE3ZjYzNWUxNzkyNTdmZjkwYTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAKQEAgLTM2LDE4ICszNywyNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7CitjbGFzcyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eSA6IHB1YmxpYyBXZWJDb3JlOjpOYXRpdmVJbWFnZTo6T2JzZXJ2ZXIgewogcHVibGljOgotICAg
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpID0gZGVmYXVsdDsKKyAgICBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7CiAKLSAgICB2b2lkIGNh
Y2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpJbWFnZUJ1ZmZlciopOworICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFz
ZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKKyAg
ICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsKKwogcHJpdmF0
ZToKLSAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5SGFzaE1hcCA9IEhhc2hNYXA8V2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlcio+
OworICAgIHVzaW5nIEltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlcio+OworICAgIHVzaW5n
IE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpOYXRpdmVJbWFnZSo+OworICAgIAorICAgIHZvaWQgcmVsZWFz
ZU5hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3ZlcnJp
ZGU7CiAKLSAgICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsK
KyAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAgTmF0aXZlSW1hZ2VI
YXNoTWFwIG1fbmF0aXZlSW1hZ2VzOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413842</attachid>
            <date>2020-11-11 11:09:11 -0800</date>
            <delta_ts>2020-11-11 11:56:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201111110909.patch</filename>
            <type>text/plain</type>
            <size>54930</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTljYzBhYmM0MDE2MjI2
NDhiNDc1YWY5MzMzNjc1ZGJhM2E5ZTI4ZC4uNjJiYmRkYmY0ZDViMTczYjRjNDVlMWIwZGRhNDY5
Yzk1ZTllZWMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIwLTExLTEwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2lu
ZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggYWxsIHRoZSBkcmF3
SW1hZ2UgZnVuY3Rpb25zIHdpbGwgbm90IGJlIHJlY29yZGVkIGFzIGRpc3BsYXkKKyAgICAgICAg
bGlzdCBpdGVtcy4gSW5zdGVhZCB3ZSBhcmUgZ29pbmcgdG8gbGV0IHRoZW0gcHJvY2VlZCB0aWxs
IHRoZXkgcmVhY2ggbG93ZXIKKyAgICAgICAgbGV2ZWwgY2FsbHMgc3VjaCBhcyBkcmF3TmF0aXZl
SW1hZ2UoKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgIEJlY2F1c2Ugd2Ugbm8gbG9uZ2VyIHJl
Y29yZCBEcmF3SW1hZ2UsIGNhbGxpbmcgQml0bWFwSW1hZ2U6OmRyYXcoKSBpcyBub3cKKyAgICAg
ICAgYWxsb3dlZCBldmVuIGlmIHRoZSBHcmFwaGljc0NvbnRleHQgaXMgYmFja2VkIGJ5IGEgRGlz
cGxheUxpc3Q6OlJlY29yZGVyLgorICAgICAgICBJZiB0aGUgaW1hZ2Ugc3ViLXNhbXBsaW5nIGlz
IGFsbG93ZWQsIHdoaWNoIHdlIGRvIGZvciBpT1MsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgaXMg
Z29pbmcgdG8gYmUgY2FsbGVkLiBXZSBuZWVkIHRvIGd1YXJkIHVzaW5nIHRoZSBwbGF0Zm9ybUNv
bnRleHQgYnkgY2FsbGluZworICAgICAgICBoYXNQbGF0Zm9ybUNvbnRleHQoKSBmaXJzdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgV2UgaGF2ZSB0byBs
ZXQgdGhlc2UgZnVuY3Rpb24gcHJvY2VlZCB0aWxsIHRoZXkgZW5kIHVwIGNhbGxpbmcgdGhlIAor
ICAgICAgICBET00gcmVuZGVyaW5nIGZvciBTVkdJbWFnZSwgUERGRG9jdW1lbnRJbWFnZTo6ZHJh
dyBmb3IgcGRmIGltYWdlIGFuZCAKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlIGZvciB0aGUgcmVz
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjp+TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlOjpzZXRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNldE9ic2VydmVyKToKKyAgICAgICAgQWRkIGFuIG9ic2Vy
dmVyIHRvIE5hdGl2ZUltYWdlIHdob3NlIGpvYiBpcyB0byBvYnNlcnZlIHdoZW4gaXQgaXMgYmVp
bmcKKyAgICAgICAgZGVzdHJveWVkLiBBZGQgYWxzbyBhbiByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgc28gaXQgY2FuIGJlIHVzZWQgdG8KKyAgICAgICAgcmVmZXJlbmNlIHRoZSBOYXRpdmVJ
bWFnZSBpbiBhIE5hdGl2ZUltYWdlSGFzaE1hcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICBUaGlzIGRlZmluaXRp
b24gY2FuIGJlIHVzZWQgdG8gZW5jb2RlL2RlY29kZSBhIFJlZjxOYXRpdmVJbWFnZT4gZm9yIElQ
QworICAgICAgICBtZXNzYWdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
bV9uYXRpdmVJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Om5hdGl2ZUltYWdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8g
Y2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIERpc3BsYXlMaXN0IHN1Y2ggdGhhdCBpdHMKKyAgICAg
ICAgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGNhbiBiZSB1c2VkIHdoZW4gcmVjb3JkaW5n
IERyYXdOYXRpdmVJbWFnZQorICAgICAgICBhbmQgbV9uYXRpdmVJbWFnZXMgY2FuIGJlIHVzZWQg
dG8gYWNjZXNzIHRoZSBOYXRpdmVJbWFnZSB3aGVuIHJlcGxheWluZworICAgICAgICBiYWNrIERy
YXdOYXRpdmVJbWFnZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0Ojppc0lubGluZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRy
YXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2
ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29k
ZSk6IERlbGV0ZWQuCisgICAgICAgIERyYXdOYXRpdmVJbWFnZSBpcyBhbiBpbmxpbmUgaXRlbSBu
b3cuIE5vIGVuY29kaW5nL2RlY29kaW5nIGlzIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6
Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIEFzayB0aGUgRGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpEZWxlZ2F0ZSB0byBjYWNoZSB0aGUgTmF0aXZlSW1hZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAg
ICBSZXNvbHZlIHRoZSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgb2YgRHJhd05hdGl2ZUlt
YWdlIHRvIGEgTmF0aXZlSW1hZ2UKKyAgICAgICAgZnJvbSB0aGUgbV9uYXRpdmVJbWFnZXMgYmVm
b3JlIGRyYXdpbmcgaXQuCisKIDIwMjAtMTEtMTAgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBwb3J0IGZvciByZXBsYWNlZCBlbGVt
ZW50IGJhc2VsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3MTAzNTQyNWQyMzFiZjI1MDFjNDUwOGE5OWYxY2E2
ZGRmOTk0MDcuLjMyNzdhOTA2ZjhiZGUzZGI0N2RjZGExNGE0NTJhYmQ2ZTMwODEwODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjAtMTEtMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBDYWNoZSB0aGUgTmF0aXZlSW1h
Z2UgaW4gR1BVIFByb2Nlc3MgYW5kIGFsbG93IHJlZmVyZW5jaW5nIGl0IHdpdGggaXRzIFJlbW90
ZVJlc291cmNlSWRlbnRpZmllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3NTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSgpIHdpbGwgZW5zdXJlIHRoZSBO
YXRpdmVJbWFnZSBpcyBjYWNoZWQgYmVmb3JlCisgICAgICAgIHJlY29yZGluZyB0aGUgRHJhd05h
dGl2ZUltYWdlIGl0ZW0gd2l0aCB0aGUgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLgorCisg
ICAgICAgIEJlY2F1c2UgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBpcyBhIHN1cGVyY2xhc3Mgb2Yg
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjoKKyAgICAgICAgRGVsZWdhdGUsIGl0IHdpbGwgZW5zdXJl
IHRoZSBOYXRpdmVJbWFnZSBpcyBjYWNoZWQgaW4gaXRzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS4KKworICAgICAgICBJZiB0aGUgTmF0aXZlSW1hZ2UgaXMgcmVnaXN0ZXJlZCBpbiBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkgZm9yIHRoZSBmaXJzdAorICAgICAgICB0aW1lLCBpdCBpcyBnb2lu
ZyB0byBiZSBzZW50IGFzIGFuIElQQyBtZXNzYWdlIHRvIEdQVS4gVXBvbiByZWNlaXZpbmcgdGhp
cworICAgICAgICBtZXNzYWdlLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHdpbGwgY2FjaGUgdGhp
cyBOYXRpdmVJbWFnZSBpbiBpdHMKKyAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZS4gVGhpcyBt
ZXNzYWdlIGhhcyB0byBiZSByZWNlaXZlZCBmb3IgYW55IE5hdGl2ZUltYWdlCisgICAgICAgIG9u
bHkgb25jZSBmb3IgaXRzIGVudGlyZSBsaWZlIHRpbWUuCisKKyAgICAgICAgV2hlbiBmbHVzaGlu
ZyB0aGUgRGlzcGxheUxpc3Qgb2YgYW55IEltYWdlQnVmZmVyLCBSZW1vdGVJbWFnZUJ1ZmZlciB3
aWxsCisgICAgICAgIGVuc3VyZSB0aGUgTmF0aXZlSW1hZ2VzIGFyZSBjYWNoZWQgaW4gdGhlIFJl
bW90ZVJlc291cmNlQ2FjaGUgYXJlIHBhc3NlZAorICAgICAgICB0byBEaXNwbGF5TGlzdDo6UmVw
bGF5ZXIgc28gaXQgY2FuIHVzZSB0aGVtIHRvIGdldCBOYXRpdmVJbWFnZSBmb3IgZXZlcnkKKyAg
ICAgICAgRHJhd05hdGl2ZUltYWdlIHdpdGggdGhlIHNhbWUgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGl0IHdhcyByZWNvcmRlZAorICAgICAgICB3aXRoLgorCisgICAgICAgIFdoZW4gTmF0
aXZlSW1hZ2UgaXMgYmluZyBkZXN0cm95ZWQsIGl0cyBkZXN0cnVjdG9yIHdpbGwgY2FsbCBpdHMg
b2JzZXJ2ZXIKKyAgICAgICAgdmlydHVhbCBtZXRob2QgcmVsZWFzZU5hdGl2ZUltYWdlKCkuIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSB3aWxsIGJlIGEKKyAgICAgICAgc3VwZXJjbGFzcyBOYXRp
dmVJbWFnZTo6T2JzZXJ2ZXIgc28gaXRzIG92ZXJyaWRpbmcgbWV0aG9kIHdpbGwgYmUgY2FsbGVk
LgorICAgICAgICBXaGVuIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUlt
YWdlKCkgaXMgY2FsbGVkIGl0IGlzIGdvaW5nCisgICAgICAgIHRvIGRlbGV0ZSB0aGUgTmF0aXZl
SW1hZ2UgZnJvbSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgYW5kIGlzIGdvaW5nIHRvCisgICAg
ICAgIHNlbmQgYSBtZXNzYWdlIHRvIEdQVSB0byBkZWxldGUgdGhlIGNvcnJlc3BvbmRpbmcgTmF0
aXZlSW1hZ2UgZnJvbQorICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlIHZpYSBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpuYXRpdmVJbWFnZXMgY29uc3QpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
ZjxOYXRpdmVJbWFnZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
ZjxOYXRpdmVJbWFnZT4+OjpkZWNvZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXJQcm94eTo6flJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Ojpj
YWNoZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOgorCiAyMDIwLTExLTEwICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjQ2F0YWx5c3Rd
IEFkZCBlbnRpdGxlbWVudCBmb3IgbWVzc2FnZSBmaWx0ZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDI0NzIyM2Y4YzRmMzFhNzBiYTRiYWFhNDU5MzUxOWQyN2Y2NDMzODMuLmM4Y2NmOGZmYTEz
Yjc2OGUzMWFkNzdjOGRiNDdjNjdjOWNhOTFhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTIx
Niw2ICsxMjE2LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFVc2FnZUluZm8uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGltcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvT3Bl
bkdMU2hpbXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJiODI0ODZmYjk0
ZTY1Yzc5NWE2Nzc3NjZhZGYxMzQxOGY5ZmU3M2YuLjhkZmQxOWM2Y2U3MjYwZDc2NWZjNTMwOTlm
OWQ3MDI1OTJhNGM4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjUsNiArMjE2NSw3IEBACiAJCTcyOTlCQzY4MjNENkE1
M0UwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5n
TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyOUQwNTMwMjUzMTQyNDMwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJF
MjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEz
RjkwMDAxQzlEMDMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5p
bWF0aW9uRnJhbWVSYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNzJBQjlBMjEyNTVBOUZERTAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJl
bmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFC
OUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIw
MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VC
dWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NG
RTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3
NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMg
LyogTWVzc2FnZUV2ZW50LmggKi87IH07CkBAIC05OTcxLDYgKzk5NzIsNyBAQAogCQk3Mjk5QkM2
NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5
RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdl
UmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUmVmZXJlbmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJC
QUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1h
Z2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY0MDgsNiArMjY0MTAs
NyBAQAogCQkJCTMxNEJFM0E1MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVk
SW1hZ2UuaCAqLywKIAkJCQk3MjUyMzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2Uu
Y3BwICovLAogCQkJCTU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICov
LAorCQkJCTcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5o
ICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlC
Mjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5
QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovLApAQCAtMzM0MzgsNiArMzM0
NDEsNyBAQAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyNkQ1NkUzMjUzQUUzNjYwMDAyRUY5MCAvKiBOYXRp
dmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJBQjlBMjEyNTVBOUZERTAwRTZFQkYxIC8q
IE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJD
RDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEw
QjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24u
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCmluZGV4IGExMmFmNDU5MDc5ZjA1M2M4NmNlOTgyOTdiZDM0Y2JmOWQ5
Y2EyODcuLjA3OTJkY2M5N2VlNTBkZTE0NjIzMTNlNWU1MzUwN2VkNzJlOTUzOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTQw
OSw3ICs0MDksNyBAQCBTdWJzYW1wbGluZ0xldmVsIEJpdG1hcEltYWdlOjpzdWJzYW1wbGluZ0xl
dmVsRm9yU2NhbGVGYWN0b3IoR3JhcGhpY3NDb250ZXh0JiBjbwogewogI2lmIFVTRShDRykKICAg
ICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYgY29u
dGV4dHMuCi0gICAgaWYgKENHQ29udGV4dEdldFR5cGUoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSkgPT0ga0NHQ29udGV4dFR5cGVQREYpCisgICAgaWYgKGNvbnRleHQuaGFzUGxhdGZvcm1Db250
ZXh0KCkgJiYgQ0dDb250ZXh0R2V0VHlwZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSA9PSBr
Q0dDb250ZXh0VHlwZVBERikKICAgICAgICAgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQ7CiAKICAgICBmbG9hdCBzY2FsZSA9IHN0ZDo6bWluKGZsb2F0KDEpLCBzdGQ6Om1heChzY2Fs
ZUZhY3Rvci53aWR0aCgpLCBzY2FsZUZhY3Rvci5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMDI1
OGQ2NDFkNzY0Yjk5YWIxY2Q4Y2RmOTQyOThkMGRkZjg3YjE0NS4uM2ZlZTg1OTgzMmE3YzAxNDFh
MDc5MDFmYTk1NDI4YmRlNTJhMWJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC03NjAsOSArNzYwLDYgQEAgSW1h
Z2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkK
LSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291
cmNlLCBvcHRpb25zKTsKLQogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKICAgICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNv
dXJjZSwgb3B0aW9ucyk7CiB9CkBAIC03NzIsOSArNzY5LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEdy
YXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VE
cmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJu
IG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVT
aXplLCBzcGFjaW5nLCBvcHRpb25zKTsKLQogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRh
aW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRl
cnBvbGF0aW9uUXVhbGl0eSgpKTsKICAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CkBAIC03
ODUsOSArNzc5LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwog
Ci0gICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2Uo
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxl
LCBvcHRpb25zKTsKLQogICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1
bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CiAgICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4K
ICAgICAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0
aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZS5jcHAKaW5kZXggM2YxM2RjYWIzNWFjOGM1YTk4MWRkZDlhMzIwODg4ODRmZDRhYTI1My4uOTk2
ZDcxOTdhNjFjYTEyYzdkMzRmMmE2YzdhNGJlMTBlNmVjYmY4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcApAQCAtNDIsNCArNDIsMTAg
QEAgTmF0aXZlSW1hZ2U6Ok5hdGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJiBwbGF0Zm9ybUlt
YWdlKQogewogfQogCitOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKCkKK3sKKyAgICBpZiAobV9v
YnNlcnZlcikKKyAgICAgICAgbV9vYnNlcnZlci0+cmVsZWFzZU5hdGl2ZUltYWdlKG1fcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKaW5kZXggZDA2
MmI5N2ZkNDQ0ZjBjZWFhMjJiZGQ4MzkwMDg4YzMzMjAyYzI1Mi4uMDM5NDMyNzQ3Zjk4NWZjNTk4
MGY5NzFjYjA5NjkyNjBjMDU5MTkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiQ29sb3Iu
aCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorI2lu
Y2x1ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzcsMjAgKzM5LDM3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5hdGl2ZUlt
YWdlIDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlSW1hZ2U+IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgor
ICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsK
KyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIE9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgIH07CisK
ICAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2ZUltYWdlPiBjcmVhdGUoUGxh
dGZvcm1JbWFnZVB0ciYmKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgpOwor
CiAgICAgY29uc3QgUGxhdGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcjsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKCkg
Y29uc3Q7CiAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OwogICAgIENvbG9yIHNpbmdsZVBpeGVs
U29saWRDb2xvcigpIGNvbnN0OwogCisgICAgdm9pZCBzZXRSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikgeyBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIqIG9ic2VydmVyKSB7
IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQogICAgIHZvaWQgY2xlYXJTdWJpbWFnZXMoKTsKIAog
cHJpdmF0ZToKICAgICBOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYpOwogCiAgICAgUGxh
dGZvcm1JbWFnZVB0ciBtX3BsYXRmb3JtSW1hZ2U7CisgICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXIg
eyBudWxscHRyIH07CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHsgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpIH07CiB9OwogCit1c2luZyBOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5hdGl2ZUltYWdlPj47CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZVJlZmVyZW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OWYzYjFhZmU1MzkwYTlmOWE0YTJi
YjM5NjUxODc5Y2RmYmYxNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIE5hdGl2ZUltYWdlUmVmZXJlbmNlID0gUmVmPE5hdGl2ZUltYWdlPjsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggZjUwNmRkZjQ5NTI3
NWRiYjVjMDkwMjhjNjFhNDkzN2E5Yzg3NTk0Yy4uNDY4YTNkNTU0NTYyYTk2NzYzNWRjMWI3Njk5
ZmEyNTY2ZjRjYTg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC01Miw2ICs1Miw3
IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmR1bXAoKSBjb25zdAogCiBEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QoRGlzcGxheUxpc3QmJiBvdGhlcikKICAgICA6IG1faW1hZ2VCdWZmZXJzKHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9pbWFnZUJ1ZmZlcnMsIHsgfSkpCisgICAgLCBtX25hdGl2ZUltYWdlcyhz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fbmF0aXZlSW1hZ2VzLCB7IH0pKQogICAgICwgbV9pdGVtcyhz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1faXRlbXMsIG51bGxwdHIpKQogICAgICwgbV9kcmF3aW5nSXRl
bUV4dGVudHMoc3RkOjpleGNoYW5nZShvdGhlci5tX2RyYXdpbmdJdGVtRXh0ZW50cywgeyB9KSkK
IHsKQEAgLTY4LDYgKzY5LDcgQEAgRGlzcGxheUxpc3Q6On5EaXNwbGF5TGlzdCgpID0gZGVmYXVs
dDsKIERpc3BsYXlMaXN0JiBEaXNwbGF5TGlzdDo6b3BlcmF0b3I9KERpc3BsYXlMaXN0JiYgb3Ro
ZXIpCiB7CiAgICAgbV9pbWFnZUJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faW1hZ2VC
dWZmZXJzLCB7IH0pOworICAgIG1fbmF0aXZlSW1hZ2VzID0gc3RkOjpleGNoYW5nZShvdGhlci5t
X25hdGl2ZUltYWdlcywgeyB9KTsKICAgICBtX2l0ZW1zID0gc3RkOjpleGNoYW5nZShvdGhlci5t
X2l0ZW1zLCBudWxscHRyKTsKICAgICBtX2RyYXdpbmdJdGVtRXh0ZW50cyA9IHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9kcmF3aW5nSXRlbUV4dGVudHMsIHsgfSk7CiAgICAgcmV0dXJuICp0aGlzOwpA
QCAtNzksNiArODEsNyBAQCB2b2lkIERpc3BsYXlMaXN0OjpjbGVhcigpCiAgICAgICAgIG1faXRl
bXMtPmNsZWFyKCk7CiAgICAgbV9kcmF3aW5nSXRlbUV4dGVudHMuY2xlYXIoKTsKICAgICBtX2lt
YWdlQnVmZmVycy5jbGVhcigpOworICAgIG1fbmF0aXZlSW1hZ2VzLmNsZWFyKCk7CiB9CiAKIGJv
b2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywgSXRl
bUhhbmRsZSBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAzNjhjNzgwODczY2M0ZTA0
OWUwMDFhZjE0ZjVhNmEyYmZlNGRlZDZlLi43ZjYwNzhmODg0ZmMzNWM0ZjVhODM4NGU1ZjI4OGUz
NzE4ODRhMTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIGFzVGV4dChBc1RleHRGbGFncykgY29uc3Q7CiAKICAgICBjb25zdCBJ
bWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VC
dWZmZXJzOyB9CisgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMoKSBj
b25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRJdGVtQnVmZmVyQ2xpZW50KEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50Kik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyQ2xpZW50KEl0ZW1CdWZmZXJXcml0aW5nQ2xp
ZW50Kik7CkBAIC0xNTMsMTQgKzE1NCwyNCBAQCBwcml2YXRlOgogICAgICAgICBtX2RyYXdpbmdJ
dGVtRXh0ZW50cy5hcHBlbmQoV1RGTW92ZShleHRlbnQpKTsKICAgICB9CiAKLSAgICB2b2lkIGNh
Y2hlSW1hZ2VCdWZmZXIoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyKQor
ICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZm
ZXIpCiAgICAgewotICAgICAgICBtX2ltYWdlQnVmZmVycy5hZGQoaW1hZ2VCdWZmZXItPnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CisgICAgICAg
IG1faW1hZ2VCdWZmZXJzLmVuc3VyZShpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoKSwgWyZdKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWYoaW1hZ2VCdWZmZXIp
OworICAgICAgICB9KTsKICAgICB9CiAKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZl
SW1hZ2UmIGltYWdlKQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVJbWFnZXMuZW5zdXJlKGltYWdl
LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBbJl0oKSB7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVJlZihpbWFnZSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICAKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOwogCiAgICAg
SW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIE5hdGl2ZUltYWdlSGFzaE1h
cCBtX25hdGl2ZUltYWdlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1ZmZlcj4gbV9pdGVt
czsKICAgICBWZWN0b3I8T3B0aW9uYWw8RmxvYXRSZWN0Pj4gbV9kcmF3aW5nSXRlbUV4dGVudHM7
CiAgICAgYm9vbCBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyB7IHRydWUgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYzdmOGFjODU4MDkyYTI2
MDgyZTg1Y2I4ZWRkMjczNDk2NTNkNGM4NS4uZWMyZDZlYTU1MDhhMjIwODUyOTdhNTViYzVjMTcz
ODAwYzVhNWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAKQEAgLTMzMCwxMCArMzMwLDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAg
ICAgZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkufkRyYXdMaW5lc0ZvclRleHQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6IHsKLSAg
ICAgICAgZ2V0PERyYXdOYXRpdmVJbWFnZT4oKS5+RHJhd05hdGl2ZUltYWdlKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6IHsKICAgICAgICAg
Z2V0PERyYXdQYXRoPigpLn5EcmF3UGF0aCgpOwogICAgICAgICByZXR1cm47CkBAIC00NDAsNiAr
NDM2LDEwIEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdJbWFnZUJ1ZmZlcj46OnZhbHVl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdMaW5lPjo6dmFsdWUpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKaW5kZXggYzk4
Zjg0ODMwZTAxMGFhZWVlYzJmYzJlODEzZDgwY2NiYjc0ZjY5MS4uYTFhZDQ2MDFhNmQ5MjJkYzk3
ODAwODRjODM0MTBmZDVjNWVlYWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmNwcApAQCAtMjYwLDcgKzI2MCw2IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBl
IHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3SW1hZ2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Bh
dGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1RpbGVkSW1hZ2U6CkBAIC0yOTAsNiArMjg5LDcgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRl
bVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
OgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdJbWFnZUJ1ZmZlcjoKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKaW5kZXggYzdlZGQ3NThkOThmZTE5MjdhYzUyMzY1NGUxZGY0Njkz
OGEwZjI3ZC4uNjE1MzFmYjkyNTk0NjZkMDAwMTdkMmVlNjM0ZTMwYzJkOTFiZmFhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDYzLDE4ICs0NjMsMTQgQEAgc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFn
ZUJ1ZmZlciYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdOYXRpdmVJbWFnZTo6RHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi0gICAgOiBtX2ltYWdlKGltYWdl
KQotICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQotICAgICwgbV9kZXN0aW5hdGlvblJlY3Qo
ZGVzdFJlY3QpCi0gICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKLSAgICAsIG1fb3B0aW9ucyhvcHRp
b25zKQorTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0CiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0Cit2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBOYXRpdmVJbWFnZSYgaW1hZ2UpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3Qs
IG1fb3B0aW9ucyk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIG1faW1hZ2VT
aXplLCBtX2Rlc3RpbmF0aW9uUmVjdCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwogfQogCiBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2
ZUltYWdlJiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYTg2MTFj
NzYxZjFkYTM4NTZiZTQzMjEzNmY0MWU3MmQxODU3ZTRlOS4uMWU0ZTAxZDM5ZTc1OGJhOTk5ZjY5
YTQ2MTNjNmU0ZjhiYmM0NDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBA
IC0xMjc0LDcxICsxMjc0LDM2IEBAIHByaXZhdGU6CiBjbGFzcyBEcmF3TmF0aXZlSW1hZ2Ugewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0
ZW0gPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1
ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBEcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CisgICAgRHJhd05hdGl2
ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQorICAgICAgICA6IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUp
CisgICAgICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCisgICAgICAgICwgbV9zcmNS
ZWN0KHNyY1JlY3QpCisgICAgICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCisgICAgeworICAgIH0K
IAorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQog
ICAgIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9
CiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uUmVjdDsgfQogCi0gICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdDsKKyAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0OworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1h
Z2UmKSBjb25zdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uUmVjdDsgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxEcmF3TmF0aXZlSW1hZ2U+IGRlY29kZShEZWNvZGVyJik7Ci0KIHByaXZhdGU6Ci0gICAgUmVm
PE5hdGl2ZUltYWdlPiBtX2ltYWdlOworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7
CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25SZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1Jl
Y3Q7CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsKIAotdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgRHJhd05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1faW1hZ2U7Ci0gICAgZW5jb2RlciA8PCBt
X2ltYWdlU2l6ZTsKLSAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb25SZWN0OwotICAgIGVuY29k
ZXIgPDwgbV9zcmNSZWN0OwotICAgIGVuY29kZXIgPDwgbV9vcHRpb25zOwotfQotCi10ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9uYWw8RHJhd05hdGl2ZUltYWdlPiBEcmF3TmF0aXZlSW1h
Z2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPFJlZjxOYXRpdmVJ
bWFnZT4+IGltYWdlOwotICAgIGRlY29kZXIgPj4gaW1hZ2U7Ci0gICAgaWYgKCFpbWFnZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gaW1h
Z2VTaXplOwotICAgIGRlY29kZXIgPj4gaW1hZ2VTaXplOwotICAgIGlmICghaW1hZ2VTaXplKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBk
ZXN0aW5hdGlvblJlY3Q7Ci0gICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvblJlY3Q7Ci0gICAgaWYg
KCFkZXN0aW5hdGlvblJlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IHNyY1JlY3Q7Ci0gICAgZGVjb2RlciA+PiBzcmNSZWN0OwotICAg
IGlmICghc3JjUmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlv
bmFsPEltYWdlUGFpbnRpbmdPcHRpb25zPiBvcHRpb25zOwotICAgIGRlY29kZXIgPj4gb3B0aW9u
czsKLSAgICBpZiAoIW9wdGlvbnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICByZXR1cm4ge3sgKmltYWdlLCAqaW1hZ2VTaXplLCAqZGVzdGluYXRpb25SZWN0LCAqc3JjUmVj
dCwgKm9wdGlvbnMgfX07Ci19Ci0KIGNsYXNzIERyYXdQYXR0ZXJuIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkRyYXdQYXR0ZXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGJmM2NiMzQw
MTQxZDNlZjdhMDE2ZTRlOWVlYzU3Y2FlZWFkZGFjYTguLmEyYzdlZWNkYzcwYzliYzRmMTdlYWMw
NjU4OGJiYTk1YmRhODZjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKQEAgLTE4NywxNCArMTg3LDE5IEBAIEltYWdlRHJhd1Jlc3VsdCBSZWNvcmRlcjo6ZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0CiAKIHZv
aWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VC
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaW1hZ2VCdWZm
ZXIuZmx1c2hEcmF3aW5nQ29udGV4dCgpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1
ZmZlcihtYWtlUmVmKGltYWdlQnVmZmVyKSk7CisgICAgLy8gRklYTUU6IENhbGwgaW1hZ2VCdWZm
ZXIuZmx1c2hEcmF3aW5nQ29udGV4dCgpIHdoZW4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxODc3
Mz4gaXMgZml4ZWQuCisgICAgaWYgKCFtX2RlbGVnYXRlKQorICAgICAgICBtX2Rpc3BsYXlMaXN0
LmNhY2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwogICAgIGFwcGVuZDxEcmF3SW1hZ2VCdWZm
ZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICBpZiAoIW1f
ZGVsZWdhdGUpCisgICAgICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7
CisgICAgZWxzZQorICAgICAgICBtX2RlbGVnYXRlLT5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsK
KyAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZv
aWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGU2NTk2YmU4MjJiZTc5YzFlZmFj
M2U4MTE3M2MzYTIzNDBlNzljMTkuLmZmYTFmZTM4MWQ2YzI0M2Q2YzM1MDdmMjg5N2UxMzlmNWYy
OGU3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNjYsNiAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KICAgICB9Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4
IDVkZjBlMDA1NzAxOTdkMWM0YTNiZGJiZWEzNzk1MmYyOGRhOTMyNTMuLjA2ZGRmNWMwNzdmZGQ2
OTI1ZjNmMDJiZjFkZDcyZDhlNzUzMjk3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5jcHAKQEAgLTM0LDEwICszNCwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVwbGF5ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBJbWFn
ZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgRGVsZWdhdGUqIGRlbGVnYXRlKQorUmVwbGF5
ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgY29u
c3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIERlbGVnYXRlKiBkZWxlZ2F0ZSkK
ICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlz
dCkKICAgICAsIG1faW1hZ2VCdWZmZXJzKGltYWdlQnVmZmVycyA/ICppbWFnZUJ1ZmZlcnMgOiBt
X2Rpc3BsYXlMaXN0LmltYWdlQnVmZmVycygpKQorICAgICwgbV9uYXRpdmVJbWFnZXMobmF0aXZl
SW1hZ2VzID8gKm5hdGl2ZUltYWdlcyA6IG1fZGlzcGxheUxpc3QubmF0aXZlSW1hZ2VzKCkpCiAg
ICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewogfQpAQCAtNTUsNiArNTYsMTMgQEAgdm9pZCBS
ZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgICAgIGRyYXdJdGVt
LmFwcGx5KG1fY29udGV4dCwgKmltYWdlQnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICAKKyAgICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+KCkpIHsKKyAgICAgICAgYXV0
byYgZHJhd0l0ZW0gPSBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7CisgICAgICAgIGlmIChh
dXRvKiBpbWFnZSA9IG1fbmF0aXZlSW1hZ2VzLmdldChkcmF3SXRlbS5yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBkcmF3SXRlbS5hcHBseShtX2NvbnRleHQsICpp
bWFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpdGVtLmFwcGx5KG1fY29udGV4
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCA5MmVjNjg4
OWMzNWVmODZkM2Y5ZTk0YmVjNjY2ZTdhNzhhZTU5N2NmLi4yYzAxOWVlMGNjOGEzNmUyYzRmNWQy
NTMwMjAwZjg3NWQxNmFkZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFJlcGxheWVyKTsKIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYs
IGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRy
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBE
aXNwbGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBO
YXRpdmVJbWFnZUhhc2hNYXAqID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVu
aXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
ID0geyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKQEAgLTU5LDYgKzU5LDcgQEAg
cHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25zdCBEaXNw
bGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIG1f
aW1hZ2VCdWZmZXJzOworICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbV9uYXRpdmVJbWFn
ZXM7CiAgICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IDY0YjFl
NmJkYWU1ZWNiZjYzMDhlYjczNTRiMzE0Mzk4OTEzNzEyMjUuLjIxZWJhZDYxOTBlZmJjOGY5ZjUy
ODg5Mzc1NTcyNWEwNDU1OWM3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC02OSw3ICs2OSw4IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBpZiAoIWRpc3BsYXlMaXN0LmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgY29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKLSAgICAgICAgICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCB0aGlzIH07CisgICAg
ICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAgICAgICAgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFn
ZXMsIHRoaXMgfTsKICAgICAgICAgICAgIHJlcGxheWVyLnJlcGxheSgpOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGQyMzdhNjNiODg2OTY0MjFiYjlhMjU3
ZWY5ZGIyMTdjZmU5ZjljZjguLmRiYWIwMWFkM2MwNWRlZGRiMzNhZmY3MTZhMjI2OTRiMjM5ZDEw
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTE3Miw2ICsxNzIsMTEgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIEkKICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0YVJl
ZmVyZW5jZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKK3sKKyAg
ICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlKSk7
Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CiB7CiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtMjAyLDggKzIwNyw2IEBAIE9wdGlvbmFsPERp
c3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGVjCiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OkRyYXdJbWFnZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0
aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVJbWFnZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgogICAgICAgICByZXR1cm4gZGVjb2RlQW5k
Q3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3UGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlv
bik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAtMjQ2
LDYgKzI0OSw3IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNF
RF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6
CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0OgogICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oCmluZGV4IDdhYzk2MjAxMDNlNTdjMDdiYjJlZWUzM2ViZWZiMmM0NWYwMDdkZDEuLjQxNTkw
NGQ2NzczZTAxODJhYWI5YjExYTIwZGRlM2VjNWVmYmYwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07CiB9CiBj
bGFzcyBGbG9hdFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGVudW0gY2xhc3MgQ29sb3JTcGFj
ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogfQpAQCAtMTA1
LDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlJiwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGdldEltYWdl
RGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29y
ZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOwor
ICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOwog
ICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDcmVhdGVTaGFyZWRJdGVtRGF0YShXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXgg
ZjU1YjAyNmJkYjVlNjNhMTRjZjM2MjE0YTgzZThiYmU4ODYzMWExYi4uNmRkYmVhY2Q2MjhjNzcx
ZDRmYmQ4NzI1NjkyZTk1Y2YxMmM5MjkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
bWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBOb3RSZWZDb3VudGVkIHsKICAgICBTdWJtaXREaXNwbGF5TGlzdChXZWJLaXQ6OlNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlIGRpc3BsYXlMaXN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIEZsdXNoRGlz
cGxheUxpc3RBbmRDb21taXQoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZSBkaXNwbGF5
TGlzdCwgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaElkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCiAgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJv
bm91cworICAgIENhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2Ug
bmF0aXZlSW1hZ2UpCiAgICAgRGlkQ3JlYXRlU2hhcmVkSXRlbURhdGEoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgaGFuZGxlKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IDVlMGE2NzQyNzY0ZGZkNDIwYWViYWViYjk4ZTJk
MTBkYWI1NTQ5ZDQuLmMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNmYmRiN2VkNTZkYzRiMmMzNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcHAKQEAgLTQyLDEwICs0MiwxOCBAQCBJbWFnZUJ1ZmZlciogUmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2Uo
UmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9uYXRp
dmVJbWFnZXMuYWRkKGltYWdlLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgV1RGTW92
ZShpbWFnZSkpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7Cit9CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpKQogICAgICAgICByZXR1cm47CisgICAgaWYgKG1fbmF0aXZlSW1hZ2VzLnJlbW92
ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CiAgICAgLy8g
Q2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBlbmVkIGJlZm9yZSBy
ZWxlYXNpbmcgaXQuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApp
bmRleCBhNGU0Mjg2NjkyNzlmMWVhZjlkM2U4NTI1NTJiNDI0NDQ5OWE0OWI0Li5jNWRkZTY4MWI5
YmFiNDM3ZGQyN2NlN2JlYWY2ZTU5YWM5ZWIyOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTQ0LDEy
ICs0NCwxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoUmVmPFdlYkNv
cmU6OkltYWdlQnVmZmVyPiYmKTsKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1h
Z2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lk
IGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKICAgICB2b2lk
IHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIAogICAgIGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VC
dWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KKyAgICBjb25zdCBXZWJD
b3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlSW1hZ2VzOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNo
TWFwIG1faW1hZ2VCdWZmZXJzOworICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCBtX25h
dGl2ZUltYWdlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZGJhNWIyNDI5MDA1ZjJhYWViMGNiODEzOGU5
ODdiMmQxNDJmODhhNy4uYTE3YWU5ZmVmYjkyOTBhMTcwMjgzMDAwMjgyNGJiNjFmOGEzZDBiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMTgsNyArMjE4
LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAg
ICAgJ1dlYkNvcmU6OlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAg
ICAgICAnV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2Un
LAorICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UnLAogICAgICAgICAnV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVu
dFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMTU3MTNkNWNlOTJkMjlj
MTQ5Mzc3NWMyM2ViMWNkZWQ2NmM3ZGI5ZS4uNDYxYWQ4YTc1YzYzOGRhMjEzMWIyMjZjZTE3Yjgw
MDIwMGY0M2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0xMTE1LDYgKzExMTUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPE5h
dGl2ZUltYWdlPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8TmF0aXZlSQog
ICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBiaXRtYXAtPmNyZWF0ZUhh
bmRsZShoYW5kbGUpOwogCisgICAgZW5jb2RlciA8PCBpbWFnZS0+cmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCk7CiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKQEAgLTExMjUsNiArMTEy
NiwxMCBAQCBPcHRpb25hbDxSZWY8TmF0aXZlSW1hZ2U+PiBBcmd1bWVudENvZGVyPFJlZjxOYXRp
dmVJbWFnZT4+OjpkZWNvZGUoRGVjb2RlciYgZGVjbwogICAgIGlmICghZGlkQ3JlYXRlR3JhcGhp
Y3NDb250ZXh0Lmhhc1ZhbHVlKCkgfHwgIWRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dC52YWx1ZSgp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKQEAgLTExNDEsNiArMTE0Niw3IEBAIE9wdGlvbmFsPFJlZjxOYXRpdmVJbWFnZT4+IEFyZ3Vt
ZW50Q29kZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvCiAgICAgaWYg
KCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIG5hdGl2
ZUltYWdlLT5zZXRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICByZXR1cm4gbWFrZVJlZigqbmF0aXZlSW1hZ2UpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDU5ODU3ZmYwN2E1YWMyZjRiMzJjNTY2MzI1MTRi
NDVkZTEwMTk3YjguLmY5Y2MzNzRmNGE2OTZjZWNkNDhhMDA1NTQ3NzAyMDBmNTk0ZWY5YzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4dCgpOworICAgICAgICBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkucmVsZWFzZUlt
YWdlQnVmZmVyKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCkBAIC04MCw2ICs4MSw4IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgLCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShtYWtlV2Vha1B0cihy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLmNhY2hlSW1hZ2VCdWZmZXIoKnRo
aXMpOworCiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxpc3QoKS5zZXRJdGVtQnVm
ZmVyQ2xpZW50KHRoaXMpOwogICAgICAgICBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCku
c2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGZhbHNlKTsKICAgICB9CkBAIC0xNzksNiArMTgy
LDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIoKTsKICAgICB9CiAK
KyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmIGltYWdlKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQorICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgIH0KKwogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6
ZV90IGNhcGFjaXR5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KQpAQCAtMjA3LDggKzIxNiw2IEBAIHByb3RlY3RlZDoKICAgICAgICAg
ICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd0ltYWdlPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0lt
YWdlPigpKTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdMaW5lc0ZvclRleHQ6CiAgICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVT
aW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGl0ZW0u
Z2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0PigpKTsKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAg
ICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd05hdGl2ZUltYWdlPigpKTsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgogICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rl
cjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0aD4oaXRl
bS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRoPigpKTsKICAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAtMjUxLDYgKzI1
OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICAgICAgY2FzZSBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAg
Y2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgogICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CiAgICAgICAgIGNh
c2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA4ZDg2MTViOGE5
NmM3NDQ3MGIwOTQzN2Q4Y2Q3YzdhMTY1YmM2NWRhLi5hMzY3Mzg5OGE4NDJkMDE1NGRjNDRlMjE5
ZjA5NGU1MGM5NGYyYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCkBAIC0xMDEsNyArMTAxLDYgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2kKIAogICAgIGlm
IChpbWFnZUJ1ZmZlcikgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIGltYWdlQnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgICAgICBtX3JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLT5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VCdWZmZXIuZ2V0KCkpOwogICAgICAgICByZXR1cm4g
aW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC0xMjksOSArMTI4LDEzIEBAIERpc3BsYXlMaXN0OjpG
bHVzaElkZW50aWZpZXIgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmbHVzaERpc3BsYXlM
aXN0QW5kQ29tCiAgICAgcmV0dXJuIHNlbnRGbHVzaElkZW50aWZpZXI7CiB9CiAKK3ZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBp
bWFnZSkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNo
ZU5hdGl2ZUltYWdlKG1ha2VSZWYoaW1hZ2UpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIHsKLSAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5yZWxlYXNlSW1hZ2VC
dWZmZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IGE1NDJjODMzNWUwZTUzM2Uw
NTEzZTU3NjQyNjI0NWViYjc2NDFjZjkuLmMxZTdmNTRmMTY3YTAyNDI3ZjEzOWU1YzI0OTAyZWRi
NjVmM2FjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtNzQs
NiArNzQsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1h
Z2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlz
cGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNhY2hl
TmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1v
dGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAg
Ym9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOwpAQCAtODYsNyArODcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZChjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNl
LCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgdm9pZCBmbHVzaERpc3BsYXlMaXN0V2FzQ29tbWl0dGVkKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAKLSAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgbV9yZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk7CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5IHsgKnRoaXMgfTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9yeT4+IG1fc2hhcmVk
SXRlbUJ1ZmZlcnM7CiAgICAgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciB7IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
IH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IGZhZmY5MmEw
NGRkZmNiYmQ1ODM4NmVjOWJmYWFkOWUxMzU1YTU1NmYuLmEyMzkwYjNkYmRlYjA0MjZhMDllOGQz
YjE5OTEyMmZkNGE0YzIwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAK
QEAgLTI5LDE0ICsyOSwxOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VC
dWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlSW1hZ2VCdWZmZXIoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQorUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQg
PSBtX2ltYWdlQnVmZmVycy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpbWFnZUJ1
ZmZlcik7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVm
ZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBhdXRvIGFkZFJl
c3VsdCA9IG1faW1hZ2VCdWZmZXJzLmFkZChpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIoKSwgJmltYWdlQnVmZmVyKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQogCkBAIC01MSw2ICs1NSwyOCBAQCB2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAordm9p
ZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
IGltYWdlKQoreworICAgIG1fbmF0aXZlSW1hZ2VzLmVuc3VyZShpbWFnZS5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgeworICAgICAgICAvLyBTZXQgaXRzZWxmIGFzIGFuIG9i
c2VydmVyIHRvIE5hdGl2ZUltYWdlLCBzbyByZWxlYXNlTmF0aXZlSW1hZ2UoKQorICAgICAgICAv
LyBnZXRzIGNhbGxlZCB3aGVuIE5hdGl2ZUltYWdlIGlzIGJlaW5nIGRlbGVsZXRlZC4KKyAgICAg
ICAgaW1hZ2Uuc2V0T2JzZXJ2ZXIodGhpcyk7CisKKyAgICAgICAgLy8gVGVsbCB0aGUgR1BVIHBy
b2Nlc3MgdG8gY2FjaGUgdGhpcyByZXNvdXJjZS4KKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgICAgIHJldHVybiAmaW1h
Z2U7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNl
TmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fbmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUZWxsIHRoZSBH
UFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZS4KKyAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAppbmRleCBiZGU4MTVh
MTNjMWQ5NTFkNTIwNDkzNjhhODVjOGM0MGNhMTRkY2YzLi5iNzllMThjYmM2MDkxNzRjYmQxYjE3
ZjYzNWUxNzkyNTdmZjkwYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgPFdl
YkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTM2LDE4ICszNywy
NyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSB7CitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk7CisKK2NsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpO
YXRpdmVJbWFnZTo6T2JzZXJ2ZXIgewogcHVibGljOgotICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSgpID0gZGVmYXVsdDsKKyAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Jik7CiAKLSAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciopOwor
ICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOwogICAgIFdl
YkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1h
Z2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsKKwogcHJpdmF0ZToKLSAgICB1c2luZyBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5SGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlcio+OworICAgIHVzaW5nIEltYWdlQnVm
ZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpJbWFnZUJ1ZmZlcio+OworICAgIHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9
IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpO
YXRpdmVJbWFnZSo+OworICAgIAorICAgIHZvaWQgcmVsZWFzZU5hdGl2ZUltYWdlKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAKLSAgICBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKKyAgICBJbWFnZUJ1ZmZlckhhc2hN
YXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2Vz
OworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413847</attachid>
            <date>2020-11-11 11:56:56 -0800</date>
            <delta_ts>2020-11-11 13:46:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201111115656.patch</filename>
            <type>text/plain</type>
            <size>55432</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ0MDU3NDYwYzZlMWRl
YTRjMTRhNWJjOGI2NDZlYmI4NTdlZjY3Ny4uOWU5NmUwNGI3NzM1OWE5NTBlM2E5OWJlNDc3Nzkz
Nzk0ODU3ODEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIwLTExLTExICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2lu
ZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2ggYWxsIHRoZSBkcmF3
SW1hZ2UgZnVuY3Rpb25zIHdpbGwgbm90IGJlIHJlY29yZGVkIGFzIGRpc3BsYXkKKyAgICAgICAg
bGlzdCBpdGVtcy4gSW5zdGVhZCB3ZSBhcmUgZ29pbmcgdG8gbGV0IHRoZW0gcHJvY2VlZCB0aWxs
IHRoZXkgcmVhY2ggbG93ZXIKKyAgICAgICAgbGV2ZWwgY2FsbHMgc3VjaCBhcyBkcmF3TmF0aXZl
SW1hZ2UoKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN1YnNhbXBs
aW5nTGV2ZWxGb3JTY2FsZUZhY3Rvcik6CisgICAgICAgIEJlY2F1c2Ugd2Ugbm8gbG9uZ2VyIHJl
Y29yZCBEcmF3SW1hZ2UsIGNhbGxpbmcgQml0bWFwSW1hZ2U6OmRyYXcoKSBpcyBub3cKKyAgICAg
ICAgYWxsb3dlZCBldmVuIGlmIHRoZSBHcmFwaGljc0NvbnRleHQgaXMgYmFja2VkIGJ5IGEgRGlz
cGxheUxpc3Q6OlJlY29yZGVyLgorICAgICAgICBJZiB0aGUgaW1hZ2Ugc3ViLXNhbXBsaW5nIGlz
IGFsbG93ZWQsIHdoaWNoIHdlIGRvIGZvciBpT1MsIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgaXMg
Z29pbmcgdG8gYmUgY2FsbGVkLiBXZSBuZWVkIHRvIGd1YXJkIHVzaW5nIHRoZSBwbGF0Zm9ybUNv
bnRleHQgYnkgY2FsbGluZworICAgICAgICBoYXNQbGF0Zm9ybUNvbnRleHQoKSBmaXJzdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgV2UgaGF2ZSB0byBs
ZXQgdGhlc2UgZnVuY3Rpb24gcHJvY2VlZCB0aWxsIHRoZXkgZW5kIHVwIGNhbGxpbmcgdGhlIAor
ICAgICAgICBET00gcmVuZGVyaW5nIGZvciBTVkdJbWFnZSwgUERGRG9jdW1lbnRJbWFnZTo6ZHJh
dyBmb3IgcGRmIGltYWdlIGFuZCAKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlIGZvciB0aGUgcmVz
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjp+TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFn
ZTo6cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlOjpzZXRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNldE9ic2VydmVyKToKKyAgICAgICAgQWRkIGFuIG9ic2Vy
dmVyIHRvIE5hdGl2ZUltYWdlIHdob3NlIGpvYiBpcyB0byBvYnNlcnZlIHdoZW4gaXQgaXMgYmVp
bmcKKyAgICAgICAgZGVzdHJveWVkLiBBZGQgYWxzbyBhbiByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgc28gaXQgY2FuIGJlIHVzZWQgdG8KKyAgICAgICAgcmVmZXJlbmNlIHRoZSBOYXRpdmVJ
bWFnZSBpbiBhIE5hdGl2ZUltYWdlSGFzaE1hcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICBUaGlzIGRlZmluaXRp
b24gY2FuIGJlIHVzZWQgdG8gZW5jb2RlL2RlY29kZSBhIFJlZjxOYXRpdmVJbWFnZT4gZm9yIElQ
QworICAgICAgICBtZXNzYWdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
bV9uYXRpdmVJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Om5hdGl2ZUltYWdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8g
Y2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIERpc3BsYXlMaXN0IHN1Y2ggdGhhdCBpdHMKKyAgICAg
ICAgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGNhbiBiZSB1c2VkIHdoZW4gcmVjb3JkaW5n
IERyYXdOYXRpdmVJbWFnZQorICAgICAgICBhbmQgbV9uYXRpdmVJbWFnZXMgY2FuIGJlIHVzZWQg
dG8gYWNjZXNzIHRoZSBOYXRpdmVJbWFnZSB3aGVuIHJlcGxheWluZworICAgICAgICBiYWNrIERy
YXdOYXRpdmVJbWFnZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0Ojppc0lubGluZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRy
YXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2
ZUltYWdlOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmRlY29k
ZSk6IERlbGV0ZWQuCisgICAgICAgIERyYXdOYXRpdmVJbWFnZSBpcyBhbiBpbmxpbmUgaXRlbSBu
b3cuIE5vIGVuY29kaW5nL2RlY29kaW5nIGlzIG5lZWRlZC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZTo6
Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIEFzayB0aGUgRGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpEZWxlZ2F0ZSB0byBjYWNoZSB0aGUgTmF0aXZlSW1hZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAg
ICBSZXNvbHZlIHRoZSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgb2YgRHJhd05hdGl2ZUlt
YWdlIHRvIGEgTmF0aXZlSW1hZ2UKKyAgICAgICAgZnJvbSB0aGUgbV9uYXRpdmVJbWFnZXMgYmVm
b3JlIGRyYXdpbmcgaXQuCisKIDIwMjAtMTEtMTEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgVVNCIG1pY3JvcGhvbmUgbm90IHJlY29nbml6ZWQgaU9T
IFNhZmFyaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAxY2UyYjAxNDM4OGYzZDQyYjU1MWI3Mzc0YzFmYWVhNWFmNmIz
OWZlLi5jODcxZTc4ZGFlYjY4NjY2NDIxNDU1NmZhNDg0ZDU1YjlkMWI5ZGQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDY2IEBACisyMDIwLTExLTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2FjaGUgdGhlIE5hdGl2ZUltYWdlIGlu
IEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2luZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNv
dXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoKSB3aWxsIGVuc3VyZSB0aGUgTmF0aXZl
SW1hZ2UgaXMgY2FjaGVkIGJlZm9yZQorICAgICAgICByZWNvcmRpbmcgdGhlIERyYXdOYXRpdmVJ
bWFnZSBpdGVtIHdpdGggdGhlIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci4KKworICAgICAg
ICBCZWNhdXNlIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgaXMgYSBzdXBlcmNsYXNzIG9mIERpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6CisgICAgICAgIERlbGVnYXRlLCBpdCB3aWxsIGVuc3VyZSB0aGUg
TmF0aXZlSW1hZ2UgaXMgY2FjaGVkIGluIGl0cyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuCisK
KyAgICAgICAgSWYgdGhlIE5hdGl2ZUltYWdlIGlzIHJlZ2lzdGVyZWQgaW4gUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IGZvciB0aGUgZmlyc3QKKyAgICAgICAgdGltZSwgaXQgaXMgZ29pbmcgdG8g
YmUgc2VudCBhcyBhbiBJUEMgbWVzc2FnZSB0byBHUFUuIFVwb24gcmVjZWl2aW5nIHRoaXMKKyAg
ICAgICAgbWVzc2FnZSwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB3aWxsIGNhY2hlIHRoaXMgTmF0
aXZlSW1hZ2UgaW4gaXRzCisgICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGUuIFRoaXMgbWVzc2Fn
ZSBoYXMgdG8gYmUgcmVjZWl2ZWQgZm9yIGFueSBOYXRpdmVJbWFnZQorICAgICAgICBvbmx5IG9u
Y2UgZm9yIGl0cyBlbnRpcmUgbGlmZSB0aW1lLgorCisgICAgICAgIFdoZW4gZmx1c2hpbmcgdGhl
IERpc3BsYXlMaXN0IG9mIGFueSBJbWFnZUJ1ZmZlciwgUmVtb3RlSW1hZ2VCdWZmZXIgd2lsbAor
ICAgICAgICBlbnN1cmUgdGhlIE5hdGl2ZUltYWdlcyBhcmUgY2FjaGVkIGluIHRoZSBSZW1vdGVS
ZXNvdXJjZUNhY2hlIGFyZSBwYXNzZWQKKyAgICAgICAgdG8gRGlzcGxheUxpc3Q6OlJlcGxheWVy
IHNvIGl0IGNhbiB1c2UgdGhlbSB0byBnZXQgTmF0aXZlSW1hZ2UgZm9yIGV2ZXJ5CisgICAgICAg
IERyYXdOYXRpdmVJbWFnZSB3aXRoIHRoZSBzYW1lIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBpdCB3YXMgcmVjb3JkZWQKKyAgICAgICAgd2l0aC4KKworICAgICAgICBXaGVuIE5hdGl2ZUlt
YWdlIGlzIGJpbmcgZGVzdHJveWVkLCBpdHMgZGVzdHJ1Y3RvciB3aWxsIGNhbGwgaXRzIG9ic2Vy
dmVyCisgICAgICAgIHZpcnR1YWwgbWV0aG9kIHJlbGVhc2VOYXRpdmVJbWFnZSgpLiBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkgd2lsbCBiZSBhCisgICAgICAgIHN1cGVyY2xhc3MgTmF0aXZlSW1h
Z2U6Ok9ic2VydmVyIHNvIGl0cyBvdmVycmlkaW5nIG1ldGhvZCB3aWxsIGJlIGNhbGxlZC4KKyAg
ICAgICAgV2hlbiBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VOYXRpdmVJbWFnZSgp
IGlzIGNhbGxlZCBpdCBpcyBnb2luZworICAgICAgICB0byBkZWxldGUgdGhlIE5hdGl2ZUltYWdl
IGZyb20gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IGFuZCBpcyBnb2luZyB0bworICAgICAgICBz
ZW5kIGEgbWVzc2FnZSB0byBHUFUgdG8gZGVsZXRlIHRoZSBjb3JyZXNwb25kaW5nIE5hdGl2ZUlt
YWdlIGZyb20KKyAgICAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSB2aWEgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKCkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6bmF0aXZlSW1hZ2VzIGNvbnN0KToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0
aXZlSW1hZ2U+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8TmF0
aXZlSW1hZ2U+Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVm
ZmVyUHJveHk6On5SZW1vdGVJbWFnZUJ1ZmZlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eTo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6
Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDoKKwogMjAyMC0xMS0xMSAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY5MzQ4KTog
QVNTRVJUSU9OIEZBSUxFRDogIW1fbWVzc2FnZVJlY2VpdmVyTWFwQ291bnQgdW5kZXIgV2ViS2l0
OjpTcGVlY2hSZWNvZ25pdGlvblNlcnZlcjo6flNwZWVjaFJlY29nbml0aW9uU2VydmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCBmMWNlMDA2ZmIyZmU1NjFiNDY5NjlmYTEzYWZmYjUxZjdkYTM3NzQ5
Li5jNDEzYjcyZmFjZTc1MGJkMDE4MTQ5ZTllOWQ5NDBhM2NkYTc5ZGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTEyMTUsNiArMTIxNSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVu
Y2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiMjM2ZjU1ZjI2MGUwMzYyYTAyOGI5YzNkNDU5NWY5YjUwZGIwMzNlLi4wODQ0Njg2ODQxY2Yy
ZjExYzk4N2E0YmYyNGNkODQ5Y2JhYzZmNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY0LDYgKzIxNjQsNyBAQAogCQk3
Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgz
IC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MjlEMDUzMDI1MzE0MjQzMDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzJBNzNCRUYyNDVBM0Y5MDAwMUM5RDAzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAw
QzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRp
dmVJbWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJC
QUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3
NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGlu
ZVJlY29yZEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc1NTNDRkU2MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJlY29yZEZhY3Rvcnku
aCAqLzsgfTsKIAkJNzU3OTNFODQwRDBDRTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFODEwRDBD
RTBCMzAwN0ZDMEFDIC8qIE1lc3NhZ2VFdmVudC5oICovOyB9OwpAQCAtOTk3MCw2ICs5OTcxLDcg
QEAKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAv
KiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZVJlZmVy
ZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNDIzRTE3MzI3MDA4
RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyQkFDM0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAv
KiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsYXRmb3JtSW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2
NDA4LDYgKzI2NDEwLDcgQEAKIAkJCQkzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8q
IE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0
aXZlSW1hZ2UuaCAqLywKKwkJCQk3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1h
Z2VSZWZlcmVuY2UuaCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5j
cHAgKi8sCiAJCQkJQjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlB
ODhERDQ4ODBCNDYyOUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAg
LTMzNDQyLDYgKzMzNDQ1LDcgQEAKIAkJCQlBODE4NzIyMzA5NzdEM0MwMDA1ODI2RDkgLyogTmFt
ZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxRTA5NzdEM0MwMDA1ODI2RDkg
LyogTmFtZU5vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjZENTZFMzI1M0FFMzY2MDAw
MkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyQUI5QTIxMjU1QTlG
REUwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZp
Z2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBhMTJhZjQ1OTA3OWYwNTNjODZjZTk4
Mjk3YmQzNGNiZjlkOWNhMjg3Li4wNzkyZGNjOTdlZTUwZGUxNDYyMzEzZTVlNTM1MDdlZDcyZTk1
MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCkBAIC00MDksNyArNDA5LDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBCaXRtYXBJbWFnZTo6
c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlRmFjdG9yKEdyYXBoaWNzQ29udGV4dCYgY28KIHsKICNp
ZiBVU0UoQ0cpCiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5n
IGludG8gUERGIGNvbnRleHRzLgotICAgIGlmIChDR0NvbnRleHRHZXRUeXBlKGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCkpID09IGtDR0NvbnRleHRUeXBlUERGKQorICAgIGlmIChjb250ZXh0Lmhh
c1BsYXRmb3JtQ29udGV4dCgpICYmIENHQ29udGV4dEdldFR5cGUoY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKSkgPT0ga0NHQ29udGV4dFR5cGVQREYpCiAgICAgICAgIHJldHVybiBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0OwogCiAgICAgZmxvYXQgc2NhbGUgPSBzdGQ6Om1pbihmbG9hdCgxKSwg
c3RkOjptYXgoc2NhbGVGYWN0b3Iud2lkdGgoKSwgc2NhbGVGYWN0b3IuaGVpZ2h0KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCmluZGV4IDAyNThkNjQxZDc2NGI5OWFiMWNkOGNkZjk0Mjk4ZDBkZGY4N2IxNDUuLjNmZWU4
NTk4MzJhN2MwMTQxYTA3OTAxZmE5NTQyOGJkZTUyYTFiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNzYwLDkg
Kzc2MCw2IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluCiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAg
IGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVz
dGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7Ci0KICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1h
aW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMu
aW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CiAgICAgcmV0dXJuIGltYWdlLmRyYXcoKnRoaXMsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQpAQCAtNzcyLDkgKzc2OSw2IEBAIEltYWdl
RHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCi0g
ICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7Ci0KICAgICBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMs
IG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CiAgICAgcmV0dXJuIGltYWdlLmRyYXdU
aWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIG9wdGlv
bnMpOwogfQpAQCAtNzg1LDkgKzc3OSw2IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkTm90aGluZzsKIAotICAgIGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRy
YXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3Is
IGhSdWxlLCB2UnVsZSwgb3B0aW9ucyk7Ci0KICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0
Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewogICAgICAgICAvLyBKdXN0
IGRvIGEgc2NhbGUuCiAgICAgICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2UuY3BwCmluZGV4IDNmMTNkY2FiMzVhYzhjNWE5ODFkZGQ5YTMyMDg4ODg0
ZmQ0YWEyNTMuLjk5NmQ3MTk3YTYxY2ExMmM3ZDM0ZjJhNmM3YTRiZTEwZTZlY2JmODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKQEAg
LTQyLDQgKzQyLDEwIEBAIE5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRy
JiYgcGxhdGZvcm1JbWFnZSkKIHsKIH0KIAorTmF0aXZlSW1hZ2U6On5OYXRpdmVJbWFnZSgpCit7
CisgICAgaWYgKG1fb2JzZXJ2ZXIpCisgICAgICAgIG1fb2JzZXJ2ZXItPnJlbGVhc2VOYXRpdmVJ
bWFnZShtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZS5oCmluZGV4IGQwNjJiOTdmZDQ0NGYwY2VhYTIyYmRkODM5MDA4OGMzMzIwMmMyNTIuLjAzOTQz
Mjc0N2Y5ODVmYzU5ODBmOTcxY2IwOTY5MjYwYzA1OTE5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaApAQCAtMzAsNiArMzAsOCBAQAogI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
SW1hZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM3LDIwICszOSwzNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBOYXRpdmVJbWFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPE5hdGl2ZUltYWdlPiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgY2xhc3MgT2JzZXJ2ZXIgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSA9IDA7CisgICAgcHJvdGVjdGVkOgorICAgICAgICBPYnNlcnZlcigpID0gZGVmYXVs
dDsKKyAgICB9OworCiAgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gY3JlYXRlKFBsYXRmb3JtSW1hZ2VQdHImJik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB+TmF0
aXZlSW1hZ2UoKTsKKwogICAgIGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIHBsYXRmb3JtSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtSW1hZ2U7IH0KKyAgICBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIElu
dFNpemUgc2l6ZSgpIGNvbnN0OwogICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKICAgICBDb2xv
ciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIHsgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldE9ic2VydmVyKE9ic2VydmVy
KiBvYnNlcnZlcikgeyBtX29ic2VydmVyID0gb2JzZXJ2ZXI7IH0KICAgICB2b2lkIGNsZWFyU3Vi
aW1hZ2VzKCk7CiAKIHByaXZhdGU6CiAgICAgTmF0aXZlSW1hZ2UoUGxhdGZvcm1JbWFnZVB0ciYm
KTsKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgbV9wbGF0Zm9ybUltYWdlOworICAgIE9ic2VydmVy
KiBtX29ic2VydmVyIHsgbnVsbHB0ciB9OworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB7IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSB9OwogfTsKIAordXNpbmcgTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFz
aE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxOYXRpdmVJbWFnZT4+OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDlmM2IxYWZl
NTM5MGE5ZjlhNGEyYmIzOTY1MTg3OWNkZmJmMTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaApAQCAtMCww
ICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit1c2luZyBOYXRpdmVJbWFnZVJlZmVyZW5jZSA9IFJlZjxOYXRpdmVJbWFnZT47
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4
IGY1MDZkZGY0OTUyNzVkYmI1YzA5MDI4YzYxYTQ5MzdhOWM4NzU5NGMuLjQ2OGEzZDU1NDU2MmE5
Njc2MzVkYzFiNzY5OWZhMjU2NmY0Y2E4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApA
QCAtNTIsNiArNTIsNyBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKCkgY29uc3QKIAogRGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0KERpc3BsYXlMaXN0JiYgb3RoZXIpCiAgICAgOiBtX2ltYWdlQnVm
ZmVycyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faW1hZ2VCdWZmZXJzLCB7IH0pKQorICAgICwgbV9u
YXRpdmVJbWFnZXMoc3RkOjpleGNoYW5nZShvdGhlci5tX25hdGl2ZUltYWdlcywgeyB9KSkKICAg
ICAsIG1faXRlbXMoc3RkOjpleGNoYW5nZShvdGhlci5tX2l0ZW1zLCBudWxscHRyKSkKICAgICAs
IG1fZHJhd2luZ0l0ZW1FeHRlbnRzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9kcmF3aW5nSXRlbUV4
dGVudHMsIHsgfSkpCiB7CkBAIC02OCw2ICs2OSw3IEBAIERpc3BsYXlMaXN0Ojp+RGlzcGxheUxp
c3QoKSA9IGRlZmF1bHQ7CiBEaXNwbGF5TGlzdCYgRGlzcGxheUxpc3Q6Om9wZXJhdG9yPShEaXNw
bGF5TGlzdCYmIG90aGVyKQogewogICAgIG1faW1hZ2VCdWZmZXJzID0gc3RkOjpleGNoYW5nZShv
dGhlci5tX2ltYWdlQnVmZmVycywgeyB9KTsKKyAgICBtX25hdGl2ZUltYWdlcyA9IHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9uYXRpdmVJbWFnZXMsIHsgfSk7CiAgICAgbV9pdGVtcyA9IHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9pdGVtcywgbnVsbHB0cik7CiAgICAgbV9kcmF3aW5nSXRlbUV4dGVudHMg
PSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZHJhd2luZ0l0ZW1FeHRlbnRzLCB7IH0pOwogICAgIHJl
dHVybiAqdGhpczsKQEAgLTc5LDYgKzgxLDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6Y2xlYXIoKQog
ICAgICAgICBtX2l0ZW1zLT5jbGVhcigpOwogICAgIG1fZHJhd2luZ0l0ZW1FeHRlbnRzLmNsZWFy
KCk7CiAgICAgbV9pbWFnZUJ1ZmZlcnMuY2xlYXIoKTsKKyAgICBtX25hdGl2ZUltYWdlcy5jbGVh
cigpOwogfQogCiBib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0Rmxh
Z3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMzY4
Yzc4MDg3M2NjNGUwNDllMDAxYWYxNGY1YTZhMmJmZTRkZWQ2ZS4uN2Y2MDc4Zjg4NGZjMzVjNGY1
YTgzODRlNWYyODhlMzcxODg0YTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTc3LDYg
Kzc3LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBhc1RleHQoQXNUZXh0RmxhZ3MpIGNvbnN0Owog
CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJl
dHVybiBtX2ltYWdlQnVmZmVyczsgfQorICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0
aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SXRlbUJ1ZmZlckNsaWVudChJdGVtQnVmZmVyUmVhZGluZ0NsaWVu
dCopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXRlbUJ1ZmZlckNsaWVudChJdGVtQnVm
ZmVyV3JpdGluZ0NsaWVudCopOwpAQCAtMTUzLDE0ICsxNTQsMjQgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9kcmF3aW5nSXRlbUV4dGVudHMuYXBwZW5kKFdURk1vdmUoZXh0ZW50KSk7CiAgICAgfQog
Ci0gICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlcikKKyAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImIGltYWdlQnVmZmVyKQogICAgIHsKLSAgICAgICAgbV9pbWFnZUJ1ZmZlcnMuYWRkKGltYWdl
QnVmZmVyLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbWFnZUJ1ZmZl
cikpOworICAgICAgICBtX2ltYWdlQnVmZmVycy5lbnN1cmUoaW1hZ2VCdWZmZXIucmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlUmVm
KGltYWdlQnVmZmVyKTsKKyAgICAgICAgfSk7CiAgICAgfQogCisgICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKKyAgICB7CisgICAgICAgIG1fbmF0aXZlSW1hZ2Vz
LmVuc3VyZShpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgeworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VSZWYoaW1hZ2UpOworICAgICAgICB9KTsKKyAgICB9CisgICAg
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFu
ZGxlKTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKKyAgICBOYXRp
dmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEl0ZW1C
dWZmZXI+IG1faXRlbXM7CiAgICAgVmVjdG9yPE9wdGlvbmFsPEZsb2F0UmVjdD4+IG1fZHJhd2lu
Z0l0ZW1FeHRlbnRzOwogICAgIGJvb2wgbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHMgeyB0cnVl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGM3
ZjhhYzg1ODA5MmEyNjA4MmU4NWNiOGVkZDI3MzQ5NjUzZDRjODUuLmVjMmQ2ZWE1NTA4YTIyMDg1
Mjk3YTU1YmM1YzE3MzgwMGM1YTVjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwCkBAIC0zMzAsMTAgKzMzMCw2IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVz
dHJveSgpCiAgICAgICAgIGdldDxEcmF3TGluZXNGb3JUZXh0PigpLn5EcmF3TGluZXNGb3JUZXh0
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOiB7Ci0gICAgICAgIGdldDxEcmF3TmF0aXZlSW1hZ2U+KCkufkRyYXdOYXRpdmVJbWFn
ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRo
OiB7CiAgICAgICAgIGdldDxEcmF3UGF0aD4oKS5+RHJhd1BhdGgoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNDQwLDYgKzQzNiwxMCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3SW1hZ2VC
dWZmZXI+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOiB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdOYXRpdmVJbWFnZT46OnZhbHVlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZTogewogICAgICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3TGluZT46OnZhbHVl
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwCmluZGV4IGM5OGY4NDgzMGUwMTBhYWVlZWMyZmMyZTgxM2Q4MGNjYmI3NGY2OTEuLmExYWQ0
NjAxYTZkOTIyZGM5NzgwMDg0YzgzNDEwZmQ1YzVlZWFhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTI2MCw3ICsyNjAsNiBAQCBib29sIGlzSW5saW5l
SXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0Zv
clRleHQ6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdQYXRoOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlOgpAQCAtMjkwLDYgKzI4OSw3IEBAIGJvb2wgaXNJ
bmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JE
b2N1bWVudE1hcmtlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OgogICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGM3ZWRkNzU4ZDk4ZmUxOTI3YWM1
MjM2NTRlMWRmNDY5MzhhMGYyN2QuLjYxNTMxZmI5MjU5NDY2ZDAwMDE3ZDJlZTYzNGUzMGMyZDkx
YmZhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTQ2MywxOCAr
NDYzLDE0IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1EcmF3TmF0
aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotICAgIDog
bV9pbWFnZShpbWFnZSkKLSAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKLSAgICAsIG1fZGVz
dGluYXRpb25SZWN0KGRlc3RSZWN0KQotICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCi0gICAgLCBt
X29wdGlvbnMob3B0aW9ucykKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgRHJhd05hdGl2
ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAogeworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi12b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBjb25zdAordm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UmIGltYWdlKSBjb25zdAogewotICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uUmVj
dCwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRpb25z
KTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CmluZGV4IGE4NjExYzc2MWYxZGEzODU2YmU0MzIxMzZmNDFlNzJkMTg1N2U0ZTkuLjFlNGUwMWQz
OWU3NThiYTk5OWY2OWE0NjEzYzZlNGY4YmJjNDQ2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaApAQCAtMTI3NCw3MSArMTI3NCwzNiBAQCBwcml2YXRlOgogY2xhc3MgRHJhd05h
dGl2ZUltYWdlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1U
eXBlID0gSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5s
aW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0g
PSB0cnVlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwor
ICAgIERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICAgICAgOiBtX3JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgICwgbV9pbWFnZVNp
emUoaW1hZ2VTaXplKQorICAgICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQorICAg
ICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQor
ICAgIHsKKyAgICB9CiAKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI7IH0KICAgICBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3JjUmVjdDsgfQogICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CisgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYsIE5hdGl2ZUltYWdlJikgY29uc3Q7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8RHJhd05hdGl2ZUltYWdlPiBkZWNvZGUoRGVjb2RlciYpOwotCiBwcml2
YXRlOgotICAgIFJlZjxOYXRpdmVJbWFnZT4gbV9pbWFnZTsKKyAgICBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgRmxvYXRTaXpl
IG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAgICBGbG9h
dFJlY3QgbV9zcmNSZWN0OwogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07
CiAKLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX2ltYWdlOwotICAg
IGVuY29kZXIgPDwgbV9pbWFnZVNpemU7Ci0gICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVj
dDsKLSAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKLSAgICBlbmNvZGVyIDw8IG1fb3B0aW9uczsK
LX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERyYXdOYXRpdmVJbWFnZT4g
RHJhd05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25h
bDxSZWY8TmF0aXZlSW1hZ2U+PiBpbWFnZTsKLSAgICBkZWNvZGVyID4+IGltYWdlOwotICAgIGlm
ICghaW1hZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxG
bG9hdFNpemU+IGltYWdlU2l6ZTsKLSAgICBkZWNvZGVyID4+IGltYWdlU2l6ZTsKLSAgICBpZiAo
IWltYWdlU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gZGVzdGluYXRpb25SZWN0OwotICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25S
ZWN0OwotICAgIGlmICghZGVzdGluYXRpb25SZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBzcmNSZWN0OwotICAgIGRlY29kZXIgPj4g
c3JjUmVjdDsKLSAgICBpZiAoIXNyY1JlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBPcHRpb25hbDxJbWFnZVBhaW50aW5nT3B0aW9ucz4gb3B0aW9uczsKLSAgICBkZWNv
ZGVyID4+IG9wdGlvbnM7Ci0gICAgaWYgKCFvcHRpb25zKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgcmV0dXJuIHt7ICppbWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9u
UmVjdCwgKnNyY1JlY3QsICpvcHRpb25zIH19OwotfQotCiBjbGFzcyBEcmF3UGF0dGVybiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBl
OjpEcmF3UGF0dGVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApp
bmRleCBiZjNjYjM0MDE0MWQzZWY3YTAxNmU0ZTllZWM1N2NhZWVhZGRhY2E4Li5hMmM3ZWVjZGM3
MGM5YmM0ZjE3ZWFjMDY1ODhiYmE5NWJkYTg2YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xODcsMTQgKzE4NywxOSBAQCBJbWFnZURyYXdSZXN1bHQg
UmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdAogCiB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VC
dWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIGltYWdlQnVmZmVyLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKLSAgICBtX2Rpc3BsYXlMaXN0
LmNhY2hlSW1hZ2VCdWZmZXIobWFrZVJlZihpbWFnZUJ1ZmZlcikpOworICAgIC8vIEZJWE1FOiBD
YWxsIGltYWdlQnVmZmVyLmZsdXNoRHJhd2luZ0NvbnRleHQoKSB3aGVuIDxodHRwczovL3dlYmtp
dC5vcmcvYi8yMTg3NzM+IGlzIGZpeGVkLgorICAgIGlmICghbV9kZWxlZ2F0ZSkKKyAgICAgICAg
bV9kaXNwbGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKICAgICBhcHBlbmQ8
RHJhd0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhcHBlbmQ8RHJhd05h
dGl2ZUltYWdlPihpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7
CisgICAgaWYgKCFtX2RlbGVnYXRlKQorICAgICAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZl
SW1hZ2UoaW1hZ2UpOworICAgIGVsc2UKKyAgICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVOYXRpdmVJ
bWFnZShpbWFnZSk7CisgICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2UucmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBlNjU5NmJl
ODIyYmU3OWMxZWZhYzNlODExNzNjM2EyMzQwZTc5YzE5Li5mZmExZmUzODFkNmMyNDNkNmMzNTA3
ZjI4OTdlMTM5ZjVmMjhlNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgp
IHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUp
IHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkg
eyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJikg
eyB9CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAppbmRleCA1ZGYwZTAwNTcwMTk3ZDFjNGEzYmRiYmVhMzc5NTJmMjhkYTkzMjUzLi4w
NmRkZjVjMDc3ZmRkNjkyNWYzZjAyYmYxZGQ3MmQ4ZTc1MzI5N2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0zNCwxMCArMzQsMTEgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLVJlcGxheWVyOjpSZXBsYXll
cihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlz
dCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiBpbWFnZUJ1ZmZlcnMsIERlbGVnYXRlKiBkZWxl
Z2F0ZSkKK1JlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiBpbWFn
ZUJ1ZmZlcnMsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogbmF0aXZlSW1hZ2VzLCBEZWxlZ2F0
ZSogZGVsZWdhdGUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZGlzcGxheUxp
c3QoZGlzcGxheUxpc3QpCiAgICAgLCBtX2ltYWdlQnVmZmVycyhpbWFnZUJ1ZmZlcnMgPyAqaW1h
Z2VCdWZmZXJzIDogbV9kaXNwbGF5TGlzdC5pbWFnZUJ1ZmZlcnMoKSkKKyAgICAsIG1fbmF0aXZl
SW1hZ2VzKG5hdGl2ZUltYWdlcyA/ICpuYXRpdmVJbWFnZXMgOiBtX2Rpc3BsYXlMaXN0Lm5hdGl2
ZUltYWdlcygpKQogICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKIHsKIH0KQEAgLTU1LDYgKzU2
LDEzIEBAIHZvaWQgUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAg
ICAgICBkcmF3SXRlbS5hcHBseShtX2NvbnRleHQsICppbWFnZUJ1ZmZlcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisgICAgCisgICAgaWYgKGl0ZW0uaXM8RHJhd05hdGl2ZUltYWdlPigpKSB7
CisgICAgICAgIGF1dG8mIGRyYXdJdGVtID0gaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpOwor
ICAgICAgICBpZiAoYXV0byogaW1hZ2UgPSBtX25hdGl2ZUltYWdlcy5nZXQoZHJhd0l0ZW0ucmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgZHJhd0l0ZW0uYXBwbHko
bV9jb250ZXh0LCAqaW1hZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaXRlbS5h
cHBseShtX2NvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgK
aW5kZXggOTJlYzY4ODljMzVlZjg2ZDNmOWU5NGJlYzY2NmU3YTc4YWU1OTdjZi4uMmMwMTllZTBj
YzhhMzZlMmM0ZjVkMjUzMDIwMGY4NzVkMTZhZGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlcGxheWVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYXllcik7CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdh
dGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqID0gbnVsbHB0ciwgRGVsZWdh
dGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqID0gbnVs
bHB0ciwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51
bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5SZXBsYXllcigpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiByZXBsYXkoY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CkBAIC01
OSw2ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7CiAg
ICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CiAgICAgY29uc3QgSW1hZ2VCdWZm
ZXJIYXNoTWFwJiBtX2ltYWdlQnVmZmVyczsKKyAgICBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAm
IG1fbmF0aXZlSW1hZ2VzOwogICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aAppbmRleCAzZGJhYWY5ZjJlYzZiZDExMjdkNTFjMTE3ZTBjMWM3MDU2Y2QyNWQzLi43NmNjZjZi
MzU5NTQ2ZDI1NTYyODk2NWRhNmI3YjMwNzYwNDFkYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtNzAsNyAr
NzAsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7Ci0gICAg
ICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywg
dGhpcyB9OworICAgICAgICAgICAgY29uc3QgYXV0byYgbmF0aXZlSW1hZ2VzID0gbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMoKTsKKyAg
ICAgICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJz
LCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07CiAgICAgICAgICAgICByZXBsYXllci5yZXBsYXkoKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBlYTU2NDMyNjFl
Mjk5ZTEwZDM5MTUwNGI3NTA1MDk5OTYyNzQ0Y2E5Li5lYjAwYjZjZDRhMThiODU3ZDE3Y2VjZjQy
NTJkMjMzNWU2OTk4M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yMTYsNiArMjE2
LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKEFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBJCiAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBD
OjpJbWFnZURhdGFSZWZlcmVuY2UoV1RGTW92ZShpbWFnZURhdGEpKSk7CiB9CiAKK3ZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYg
aW1hZ2UpCit7CisgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlTmF0aXZlSW1hZ2UoV1RG
TW92ZShpbWFnZSkpOworfQorCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VS
ZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogewogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3Rl
UmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTI1Nyw4ICsyNjIsNiBA
QCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpEcmF3SW1hZ2U+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwog
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgogICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0Pihk
YXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24p
OwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICAgICAgcmV0
dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0
dGVybjoKQEAgLTMwMSw2ICszMDQsNyBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgogICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdMaW5lOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoK
ICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAppbmRleCBiMzZiOWRkNjA2NGVlNWE1MTYzYzY4ZTQxOTQ3NjMxZmUw
OTEzMTMyLi4wMmQ5NGE4OTczZGU3OGE1MTNlZWI5YjQ0Yzc3NmVkZTVmZTgwMjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFz
cyBJdGVtOwogfQogY2xhc3MgRmxvYXRTaXplOworY2xhc3MgTmF0aXZlSW1hZ2U7CiBlbnVtIGNs
YXNzIENvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9v
bDsKIH0KQEAgLTEwNSw2ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgd2FrZVVwQW5k
QXBwbHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZp
ZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwog
ICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkltYWdlRGF0YVJl
ZmVyZW5jZSYmKT4mJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpO
YXRpdmVJbWFnZT4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZVNoYXJlZERp
c3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmll
ciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCA2ZjJlMmFiZGY5MjZiY2Q0YTA0YzIz
NTU4ZTY1Yjk5NmE1YTA2MDgyLi5mYzQ5ODM2ZGVhMGM0NjliMzA5NTQ3MDE2ZmUwYTM1NDIwOGZh
ZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjYsNiAr
MjYsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50ZWQg
ewogICAgIENyZWF0ZUltYWdlQnVmZmVyKFdlYkNvcmU6OkZsb2F0U2l6ZSBsb2dpY2FsU2l6ZSwg
V2ViQ29yZTo6UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICBXYWtlVXBB
bmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcikK
ICAgICBHZXRJbWFnZURhdGEoZW51bTp1aW50OF90IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+
IChJUEM6OkltYWdlRGF0YVJlZmVyZW5jZSBpbWFnZURhdGEpIFN5bmNocm9ub3VzCisgICAgQ2Fj
aGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVyZW5jZSBuYXRpdmVJbWFnZSkK
ICAgICBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggNWUwYTY3NDI3NjRkZmQ0MjBhZWJhZWJi
OThlMmQxMGRhYjU1NDlkNC4uYzMzMmQyZjcwNGUxNTg0ZDZjMGU1Y2ZiZGI3ZWQ1NmRjNGIyYzM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtNDIsMTAgKzQyLDE4IEBAIEltYWdlQnVmZmVyKiBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZWRJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJ
bWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBt
X25hdGl2ZUltYWdlcy5hZGQoaW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBX
VEZNb3ZlKGltYWdlKSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKK30KKwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIHsKICAgICBpZiAobV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9uYXRpdmVJbWFnZXMu
cmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKICAg
ICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVm
b3JlIHJlbGVhc2luZyBpdC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZS5oCmluZGV4IGE0ZTQyODY2OTI3OWYxZWFmOWQzZTg1MjU1MmI0MjQ0NDk5YTQ5YjQuLmM1ZGRl
NjgxYjliYWI0MzdkZDI3Y2U3YmVhZjZlNTlhYzllYjI4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAt
NDQsMTIgKzQ0LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNo
ZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAg
IHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOwogICAg
IHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgCiAgICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBp
bWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQorICAgIGNvbnN0
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1
cm4gbV9uYXRpdmVJbWFnZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZl
ckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFw
IG1fbmF0aXZlSW1hZ2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBiMjI2ODhlMGRiYzE5MmViNjdmNzhi
NTE1MjRlYzUxZWQ3MTlkMzMzLi5jYWU5ZjRhZDYwZTUzNTA4ZDRjYjFiYTAxMjg0MjI5ZjlhNTY2
NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxOCw3
ICsyMTgsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgog
ICAgICAgICAnV2ViQ29yZTo6UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmllcicsCi0gICAgICAgICdXZWJDb3JlOjpOYXRpdmVJ
bWFnZScsCisgICAgICAgICdXZWJDb3JlOjpOYXRpdmVJbWFnZVJlZmVyZW5jZScsCiAgICAgICAg
ICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5JywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAxNTcxM2Q1Y2U5
MmQyOWMxNDkzNzc1YzIzZWIxY2RlZDY2YzdkYjllLi40NjFhZDhhNzVjNjM4ZGEyMTMxYjIyNmNl
MTdiODAwMjAwZjQzZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKQEAgLTExMTUsNiArMTExNSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZWY8TmF0aXZlSW1hZ2U+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxOYXRp
dmVJCiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGJpdG1hcC0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSk7CiAKKyAgICBlbmNvZGVyIDw8IGltYWdlLT5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKTsKICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIApAQCAtMTEyNSw2
ICsxMTI2LDEwIEBAIE9wdGlvbmFsPFJlZjxOYXRpdmVJbWFnZT4+IEFyZ3VtZW50Q29kZXI8UmVm
PE5hdGl2ZUltYWdlPj46OmRlY29kZShEZWNvZGVyJiBkZWNvCiAgICAgaWYgKCFkaWRDcmVhdGVH
cmFwaGljc0NvbnRleHQuaGFzVmFsdWUoKSB8fCAhZGlkQ3JlYXRlR3JhcGhpY3NDb250ZXh0LnZh
bHVlKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwpAQCAtMTE0MSw2ICsxMTQ2LDcgQEAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4g
QXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZGVjb2RlKERlY29kZXImIGRlY28KICAg
ICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAg
bmF0aXZlSW1hZ2UtPnNldFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIHJldHVybiBtYWtlUmVmKCpuYXRpdmVJbWFnZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMDFlNTNlMTVjNGIxZDFmNTBhZmQ3MGJk
Y2M5YjE2ODQ0OTZlNWQ2My4uNDI3Y2M0NTE2M2IzNTA2NjlhODNlM2Q3OGEyZjI2ZTJhZWRhYjM1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGlj
OgogICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5yZWxl
YXNlSW1hZ2VCdWZmZXIobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVsZWFzZVJlbW90ZVJlc291cmNlKG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKQEAgLTgxLDYgKzgyLDggQEAgcHJv
dGVjdGVkOgogICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KG1ha2VXZWFr
UHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVJbWFnZUJ1ZmZl
cigqdGhpcyk7CisKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLnNldEl0
ZW1CdWZmZXJDbGllbnQodGhpcyk7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxp
c3QoKS5zZXRUcmFja3NEcmF3aW5nSXRlbUV4dGVudHMoZmFsc2UpOwogICAgIH0KQEAgLTE4MSw2
ICsxODQsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAg
IH0KIAorICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYgaW1h
Z2UpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgfQorCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZl
cihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0yMDksOCArMjE4LDYgQEAgcHJvdGVjdGVkOgogICAg
ICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2U+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3SW1hZ2U+KCkpOwogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0xpbmVzRm9yVGV4dDoKICAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVu
Y29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4o
aXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KCkpOwotICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U+KCkpOwogICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGg6CiAgICAgICAgICAgICByZXR1cm4gSVBDOjpF
bmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRo
PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KCkpOwogICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46CkBAIC0yNTMs
NiArMjYwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKICAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxh
eWVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGIxYzAz
YjNhZGE4NzQ4NDJkYzE3MzAzZGNhNDE5OTA5M2IwNTM4ZmEuLjI0M2JhOWNhMTE3OGZjODk5OTUx
NzdiNmMyM2QyYTY4MzNkZmU2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKQEAgLTEwMSw3ICsxMDEsNiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaQogCiAg
ICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgICAgIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXItPnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIHJl
dHVybiBpbWFnZUJ1ZmZlcjsKICAgICB9CiAKQEAgLTEzOSw5ICsxMzgsMTMgQEAgdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGkKICAgICB9CiB9CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYo
aW1hZ2UpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5yZWxlYXNlSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCmluZGV4IGFiYTk2MmU0MDg5MzhjZjBmYjJlMzRkNWJhMDgwM2EyZTBjYTQ3
MjcuLmRkMDQ4MmM4YjYxZmMwY2Y0NjBlN2ZlMjQyN2EyNTg0ZGRkNDljMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
c3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVy
SWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBm
bHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CiAgICAgdm9pZCByZWxl
YXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
IAogICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKQEAgLTkx
LDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0
ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OworICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAgIERlcXVlPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mUmV1c2Fi
bGVIYW5kbGVzOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCBmYWZmOTJhMDRkZGZjYmJkNTgz
ODZlYzliZmFhZDllMTM1NWE1NTZmLi5hMjM5MGIzZGJkZWIwNDI2YTA5ZThkM2IxOTkxMjJmZDRh
NGMyMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC0yOSwxNCAr
MjksMTggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlcikKK1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KQorICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbWFnZUJ1
ZmZlcnMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgaW1hZ2VCdWZmZXIpOworfQor
Cit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2lt
YWdlQnVmZmVycy5hZGQoaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCks
ICZpbWFnZUJ1ZmZlcik7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKIH0KIApAQCAtNTEsNiArNTUsMjggQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OnJlbGVhc2VJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmUKICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKK3ZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3sK
KyAgICBtX25hdGl2ZUltYWdlcy5lbnN1cmUoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKCksIFsmXSgpIHsKKyAgICAgICAgLy8gU2V0IGl0c2VsZiBhcyBhbiBvYnNlcnZlciB0byBO
YXRpdmVJbWFnZSwgc28gcmVsZWFzZU5hdGl2ZUltYWdlKCkKKyAgICAgICAgLy8gZ2V0cyBjYWxs
ZWQgd2hlbiBOYXRpdmVJbWFnZSBpcyBiZWluZyBkZWxlbGV0ZWQuCisgICAgICAgIGltYWdlLnNl
dE9ic2VydmVyKHRoaXMpOworCisgICAgICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIGNh
Y2hlIHRoaXMgcmVzb3VyY2UuCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgICAgICByZXR1cm4gJmltYWdlOworICAgIH0p
OworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
Cit7CisgICAgaWYgKCFtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3Mg
dG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UuCisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKaW5kZXggYmRlODE1YTEzYzFkOTUxZDUy
MDQ5MzY4YTg1YzhjNDBjYTE0ZGNmMy4uYjc5ZTE4Y2JjNjA5MTc0Y2JkMWIxN2Y2MzVlMTc5MjU3
ZmY5MGE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL05hdGl2
ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zNiwxOCArMzcsMjcgQEAgY2xhc3Mg
SW1hZ2VCdWZmZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkgeworY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OworCitjbGFz
cyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
Ok9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKSA9IGRl
ZmF1bHQ7CisgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSYpOwogCi0gICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKTsKKyAgICB2b2lkIGNh
Y2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKTsKICAgICBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogCisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6
Ok5hdGl2ZUltYWdlJik7CisKIHByaXZhdGU6Ci0gICAgdXNpbmcgUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eUhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqPjsKKyAgICB1c2luZyBJbWFnZUJ1ZmZlckhhc2hNYXAg
PSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6
SW1hZ2VCdWZmZXIqPjsKKyAgICB1c2luZyBOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNoTWFwPFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6TmF0aXZlSW1hZ2Uq
PjsKKyAgICAKKyAgICB2b2lkIHJlbGVhc2VOYXRpdmVJbWFnZShXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOwogCi0gICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eUhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VC
dWZmZXJzOworICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKKyAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="430534"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413875</attachid>
            <date>2020-11-11 15:37:53 -0800</date>
            <delta_ts>2020-11-11 17:00:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217596-20201111153752.patch</filename>
            <type>text/plain</type>
            <size>60505</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ0MDU3NDYwYzZlMWRl
YTRjMTRhNWJjOGI2NDZlYmI4NTdlZjY3Ny4uMjg1MzAzM2FmMzM0MTg4MTI0YjAxOGQ4Y2MyMzI1
MGQ2MDY2MzNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIwLTExLTExICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
Q2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2lu
ZyBpdCB3aXRoIGl0cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBJbiB0aGlzIHBhdGNoIGFsbCB0aGUgZHJhd0lt
YWdlIGZ1bmN0aW9ucyB3aWxsIG5vdCBiZSByZWNvcmRlZCBhcyBkaXNwbGF5CisgICAgICAgIGxp
c3QgaXRlbXMuIEluc3RlYWQgd2UgYXJlIGdvaW5nIHRvIGxldCB0aGVtIHByb2NlZWQgdGlsbCB0
aGV5IHJlYWNoIGxvd2VyCisgICAgICAgIGxldmVsIGNhbGxzIHN1Y2ggYXMgZHJhd05hdGl2ZUlt
YWdlKCkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c3Vic2FtcGxpbmdM
ZXZlbEZvclNjYWxlRmFjdG9yKToKKyAgICAgICAgQmVjYXVzZSB3ZSBubyBsb25nZXIgcmVjb3Jk
IERyYXdJbWFnZSwgY2FsbGluZyBCaXRtYXBJbWFnZTo6ZHJhdygpIGlzIG5vdworICAgICAgICBh
bGxvd2VkIGV2ZW4gaWYgdGhlIEdyYXBoaWNzQ29udGV4dCBpcyBiYWNrZWQgYnkgYSBEaXNwbGF5
TGlzdDo6UmVjb3JkZXIuCisgICAgICAgIElmIHRoZSBpbWFnZSBzdWItc2FtcGxpbmcgaXMgYWxs
b3dlZCwgd2hpY2ggd2UgZG8gZm9yIGlPUywgdGhpcyBmdW5jdGlvbgorICAgICAgICBpcyBnb2lu
ZyB0byBiZSBjYWxsZWQuIFdlIG5lZWQgdG8gZ3VhcmQgdXNpbmcgdGhlIHBsYXRmb3JtQ29udGV4
dCBieSBjYWxsaW5nCisgICAgICAgIGhhc1BsYXRmb3JtQ29udGV4dCgpIGZpcnN0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICBXZSBoYXZlIHRvIGxldCB0
aGVzZSBmdW5jdGlvbiBwcm9jZWVkIHRpbGwgdGhleSBlbmQgdXAgY2FsbGluZyB0aGUgCisgICAg
ICAgIERPTSByZW5kZXJpbmcgZm9yIFNWR0ltYWdlLCBQREZEb2N1bWVudEltYWdlOjpkcmF3IGZv
ciBwZGYgaW1hZ2UgYW5kIAorICAgICAgICBkcmF3TmF0aXZlSW1hZ2UgZm9yIHRoZSByZXN0Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgTWFr
ZSBJbWFnZUJ1ZmZlciBhIENhbk1ha2VXZWFrUHRyIHNvIHdlIGNhbiBoYXZlIGEgSGFzaE1hcCB3
aG9zZSB2YWx1ZXMKKyAgICAgICAgYXJlIG9mIHR5cGUgV2Vha1B0cjxJbWFnZUJ1ZmZlcj4uCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlOjpOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6fk5hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6c2V0T2JzZXJ2ZXIpOgorICAg
ICAgICBBZGQgYW4gb2JzZXJ2ZXIgdG8gTmF0aXZlSW1hZ2Ugd2hvc2Ugam9iIGlzIHRvIG9ic2Vy
dmUgd2hlbiBpdCBpcyBiZWluZworICAgICAgICBkZXN0cm95ZWQuIEFkZCBhbHNvIGFuIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBzbyBpdCBjYW4gYmUgdXNlZCB0bworICAgICAgICByZWZl
cmVuY2UgdGhlIE5hdGl2ZUltYWdlIGluIGEgTmF0aXZlSW1hZ2VIYXNoTWFwLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaDogQWRkZWQuCisgICAg
ICAgIFRoaXMgZGVmaW5pdGlvbiBjYW4gYmUgdXNlZCB0byBlbmNvZGUvZGVjb2RlIGEgUmVmPE5h
dGl2ZUltYWdlPiBmb3IgSVBDCisgICAgICAgIG1lc3NhZ2VzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjptX25hdGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdDo6bmF0aXZlSW1hZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAg
ICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gY2FjaGUgdGhlIE5hdGl2ZUltYWdlIGluIERpc3BsYXlM
aXN0IHN1Y2ggdGhhdCBpdHMKKyAgICAgICAgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGNh
biBiZSB1c2VkIHdoZW4gcmVjb3JkaW5nIERyYXdOYXRpdmVJbWFnZQorICAgICAgICBhbmQgbV9u
YXRpdmVJbWFnZXMgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBOYXRpdmVJbWFnZSB3aGVuIHJl
cGxheWluZworICAgICAgICBiYWNrIERyYXdOYXRpdmVJbWFnZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0lubGluZUl0ZW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFn
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1h
Z2VCdWZmZXI6OkRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd0ltYWdlQnVmZmVyOjppbWFnZUJ1ZmZlcklkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmltYWdl
SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0lt
YWdlQnVmZmVyOjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
SW1hZ2U6OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIERyYXdOYXRpdmVJbWFnZSBpcyBhbiBp
bmxpbmUgaXRlbSBub3cuIE5vIGVuY29kaW5nL2RlY29kaW5nIGlzIG5lZWRlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpEZWxlZ2F0ZTo6Y2FjaGVOYXRpdmVJbWFnZSk6CisgICAgICAgIEFzayB0aGUgRGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpEZWxlZ2F0ZSB0byBjYWNoZSB0aGUgTmF0aXZlSW1hZ2UuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OlJlcGxheWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5oOgorICAgICAgICBSZXNvbHZlIHRoZSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgb2Yg
RHJhd05hdGl2ZUltYWdlIHRvIGEgTmF0aXZlSW1hZ2UKKyAgICAgICAgZnJvbSB0aGUgbV9uYXRp
dmVJbWFnZXMgYmVmb3JlIGRyYXdpbmcgaXQuCisKIDIwMjAtMTEtMTEgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVVNCIG1pY3JvcGhvbmUgbm90IHJl
Y29nbml6ZWQgaU9TIFNhZmFyaQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxY2UyYjAxNDM4OGYzZDQyYjU1MWI3Mzc0
YzFmYWVhNWFmNmIzOWZlLi41ZDVhMTZhMmU4MjBjZjQ0ZDUwN2MwNDkxNTRiODBhMmI2ZjY4ZWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTExLTExICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQ2FjaGUgdGhlIE5h
dGl2ZUltYWdlIGluIEdQVSBQcm9jZXNzIGFuZCBhbGxvdyByZWZlcmVuY2luZyBpdCB3aXRoIGl0
cyBSZW1vdGVSZXNvdXJjZUlkZW50aWZpZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNzU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KKworICAgICAgICBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKCkgd2lsbCBlbnN1cmUg
dGhlIE5hdGl2ZUltYWdlIGlzIGNhY2hlZCBiZWZvcmUKKyAgICAgICAgcmVjb3JkaW5nIHRoZSBE
cmF3TmF0aXZlSW1hZ2UgaXRlbSB3aXRoIHRoZSByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIu
CisKKyAgICAgICAgQmVjYXVzZSBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IGlzIGEgc3VwZXJjbGFz
cyBvZiBEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OgorICAgICAgICBEZWxlZ2F0ZSwgaXQgd2lsbCBl
bnN1cmUgdGhlIE5hdGl2ZUltYWdlIGlzIGNhY2hlZCBpbiBpdHMgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LgorCisgICAgICAgIElmIHRoZSBOYXRpdmVJbWFnZSBpcyByZWdpc3RlcmVkIGluIFJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSBmb3IgdGhlIGZpcnN0CisgICAgICAgIHRpbWUsIGl0IGlz
IGdvaW5nIHRvIGJlIHNlbnQgYXMgYW4gSVBDIG1lc3NhZ2UgdG8gR1BVLiBVcG9uIHJlY2Vpdmlu
ZyB0aGlzCisgICAgICAgIG1lc3NhZ2UsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgd2lsbCBjYWNo
ZSB0aGlzIE5hdGl2ZUltYWdlIGluIGl0cworICAgICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlLiBU
aGlzIG1lc3NhZ2UgaGFzIHRvIGJlIHJlY2VpdmVkIGZvciBhbnkgTmF0aXZlSW1hZ2UKKyAgICAg
ICAgb25seSBvbmNlIGZvciBpdHMgZW50aXJlIGxpZmUgdGltZS4KKworICAgICAgICBXaGVuIGZs
dXNoaW5nIHRoZSBEaXNwbGF5TGlzdCBvZiBhbnkgSW1hZ2VCdWZmZXIsIFJlbW90ZUltYWdlQnVm
ZmVyIHdpbGwKKyAgICAgICAgZW5zdXJlIHRoZSBOYXRpdmVJbWFnZXMgYXJlIGNhY2hlZCBpbiB0
aGUgUmVtb3RlUmVzb3VyY2VDYWNoZSBhcmUgcGFzc2VkCisgICAgICAgIHRvIERpc3BsYXlMaXN0
OjpSZXBsYXllciBzbyBpdCBjYW4gdXNlIHRoZW0gdG8gZ2V0IE5hdGl2ZUltYWdlIGZvciBldmVy
eQorICAgICAgICBEcmF3TmF0aXZlSW1hZ2Ugd2l0aCB0aGUgc2FtZSByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgaXQgd2FzIHJlY29yZGVkCisgICAgICAgIHdpdGguCisKKyAgICAgICAgV2hl
biBOYXRpdmVJbWFnZSBpcyBiaW5nIGRlc3Ryb3llZCwgaXRzIGRlc3RydWN0b3Igd2lsbCBjYWxs
IGl0cyBvYnNlcnZlcgorICAgICAgICB2aXJ0dWFsIG1ldGhvZCByZWxlYXNlTmF0aXZlSW1hZ2Uo
KS4gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IHdpbGwgYmUgYQorICAgICAgICBzdXBlcmNsYXNz
IE5hdGl2ZUltYWdlOjpPYnNlcnZlciBzbyBpdHMgb3ZlcnJpZGluZyBtZXRob2Qgd2lsbCBiZSBj
YWxsZWQuCisgICAgICAgIFdoZW4gUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0
aXZlSW1hZ2UoKSBpcyBjYWxsZWQgaXQgaXMgZ29pbmcKKyAgICAgICAgdG8gZGVsZXRlIHRoZSBO
YXRpdmVJbWFnZSBmcm9tIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBhbmQgaXMgZ29pbmcgdG8K
KyAgICAgICAgc2VuZCBhIG1lc3NhZ2UgdG8gR1BVIHRvIGRlbGV0ZSB0aGUgY29ycmVzcG9uZGlu
ZyBOYXRpdmVJbWFnZSBmcm9tCisgICAgICAgIFJlbW90ZVJlc291cmNlQ2FjaGUgdmlhIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSgpLgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJj
ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmg6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6Om5hdGl2ZUltYWdlcyBjb25z
dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPE5hdGl2ZUltYWdlPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPE5hdGl2ZUltYWdlPj46OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVJbWFnZUJ1ZmZlclByb3h5Ojp+UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OlJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OmNhY2hlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OmNhY2hlZEltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oOgorCiAyMDIw
LTExLTExICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNjkzNDgpOiBBU1NFUlRJT04gRkFJTEVEOiAhbV9tZXNzYWdlUmVjZWl2ZXJNYXBD
b3VudCB1bmRlciBXZWJLaXQ6OlNwZWVjaFJlY29nbml0aW9uU2VydmVyOjp+U3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGYxY2UwMDZmYjJmZTU2MWI0Njk2OWZh
MTNhZmZiNTFmN2RhMzc3NDkuLmM0MTNiNzJmYWNlNzUwYmQwMTgxNDllOWU5ZDk0MGEzY2RhNzlk
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTIxNSw2ICsxMjE1LDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZVJlZmVyZW5jZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMRVNTaGlt
cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdGguaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGIyMzZmNTVmMjYwZTAzNjJhMDI4YjljM2Q0NTk1ZjliNTBkYjAz
M2UuLjA4NDQ2ODY4NDFjZjJmMTFjOTg3YTRiZjI0Y2Q4NDljYmFjNmY0ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNjQs
NiArMjE2NCw3IEBACiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2
NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOUQwNTMwMjUzMTQyNDMwMDQyMjA5OCAv
KiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyogQW5pbWF0aW9uRnJh
bWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJBQjlBMjEyNTVBOUZE
RTAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0
aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNr
ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJB
QzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzU1M0NGRTgxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeS5oICovOyB9OwogCQk3NTc5M0U4NDBEMENFMEIzMDA3RkMwQUMgLyog
TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggKi87IH07CkBA
IC05OTcwLDYgKzk5NzEsNyBAQAogCQk3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBoYVByZW11bHRpcGxpY2F0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4
MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ01vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJBQjlBMUYy
NTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdGl2ZUltYWdlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
QkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIElt
YWdlQnVmZmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFn
ZUJ1ZmZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTYy
M0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjY0MDgsNiArMjY0MTAsNyBAQAogCQkJCTMxNEJFM0E1MUIzMTAzRkIw
MDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQk3MjUyMzk2QjI1
NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovLAogCQkJCTU1QTMzNkY2MUQ4MjA5
RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAorCQkJCTcyQUI5QTFGMjU1QTlFQTYwMEU2
RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQw
MDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyog
UGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2Fs
U3RhdGUuY3BwICovLApAQCAtMzM0NDIsNiArMzM0NDUsNyBAQAogCQkJCUE4MTg3MjIzMDk3N0Qz
QzAwMDU4MjZEOSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFF
MDk3N0QzQzAwMDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcy
NkQ1NkUzMjUzQUUzNjYwMDAyRUY5MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzJBQjlBMjEyNTVBOUZERTAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZp
bHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5h
dGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUy
OTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGExMmFm
NDU5MDc5ZjA1M2M4NmNlOTgyOTdiZDM0Y2JmOWQ5Y2EyODcuLjA3OTJkY2M5N2VlNTBkZTE0NjIz
MTNlNWU1MzUwN2VkNzJlOTUzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBTdWJzYW1wbGluZ0xl
dmVsIEJpdG1hcEltYWdlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGVGYWN0b3IoR3JhcGhpY3ND
b250ZXh0JiBjbwogewogI2lmIFVTRShDRykKICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBp
bWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYgY29udGV4dHMuCi0gICAgaWYgKENHQ29udGV4dEdl
dFR5cGUoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkgPT0ga0NHQ29udGV4dFR5cGVQREYpCisg
ICAgaWYgKGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgJiYgQ0dDb250ZXh0R2V0VHlwZShj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSA9PSBrQ0dDb250ZXh0VHlwZVBERikKICAgICAgICAg
cmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7CiAKICAgICBmbG9hdCBzY2FsZSA9IHN0
ZDo6bWluKGZsb2F0KDEpLCBzdGQ6Om1heChzY2FsZUZhY3Rvci53aWR0aCgpLCBzY2FsZUZhY3Rv
ci5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggMDI1OGQ2NDFkNzY0Yjk5YWIxY2Q4Y2RmOTQyOThk
MGRkZjg3YjE0NS4uM2ZlZTg1OTgzMmE3YzAxNDFhMDc5MDFmYTk1NDI4YmRlNTJhMWJkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCkBAIC03NjAsOSArNzYwLDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW4KICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpE
aWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJh
d0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKLQogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAgICByZXR1cm4gaW1h
Z2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CkBAIC03NzIs
OSArNzY5LDYgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0g
ICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKLQog
ICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKICAgICBy
ZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6
ZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CkBAIC03ODUsOSArNzc5LDYgQEAgSW1hZ2VEcmF3UmVz
dWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgaWYgKG1faW1wbCkKLSAgICAgICAg
cmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zKTsKLQogICAgIGlmIChoUnVs
ZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7
CiAgICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KICAgICAgICAgcmV0dXJuIGRyYXdJbWFnZShp
bWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBjZjQ3YzE5ZjBjZTE3MDRmMDI1
MTk3MjBiMzkyYTAwMjVlOWUxNGQ2Li4wMjliNzUzY2MwNzEwNjEzYWRjMjEyYmUzYWQ1ZDFmZDIw
Yjg0YmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJpbmdNb2RlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM5LDcgKzQwLDcgQEAgY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBEcmF3aW5nQ29u
dGV4dDsKIH0KIAotY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1
ZmZlcj4geworY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZUJ1ZmZl
cj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4gewogcHVibGljOgogICAgIC8v
IFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1
cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNl
OjpTUkdCLCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuY3BwCmluZGV4IDNmMTNkY2FiMzVhYzhj
NWE5ODFkZGQ5YTMyMDg4ODg0ZmQ0YWEyNTMuLmZlMDE0NTMxYjY5YjQ0ZDlkN2Q5MDNhMjQzMjRm
NTU4NzUzY2IzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hdGl2ZUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVJbWFnZS5jcHAKQEAgLTM3LDkgKzM3LDI5IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFnZSkKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVJbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKSk7
CiB9CiAKK1JlZlB0cjxOYXRpdmVJbWFnZT4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjb25zdCBQbGF0
Zm9ybUltYWdlUHRyJiBwbGF0Zm9ybUltYWdlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmICghcGxhdGZvcm1JbWFnZSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZl
SW1hZ2UocGxhdGZvcm1JbWFnZSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSk7Cit9CisK
IE5hdGl2ZUltYWdlOjpOYXRpdmVJbWFnZShQbGF0Zm9ybUltYWdlUHRyJiYgcGxhdGZvcm1JbWFn
ZSkKICAgICA6IG1fcGxhdGZvcm1JbWFnZShXVEZNb3ZlKHBsYXRmb3JtSW1hZ2UpKQorICAgICwg
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpKQoreworfQorCitOYXRpdmVJbWFnZTo6TmF0aXZlSW1hZ2UoY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgcGxhdGZvcm1JbWFnZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICA6IG1fcGxhdGZvcm1JbWFnZShwbGF0
Zm9ybUltYWdlKQorICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQoreworfQorCitOYXRpdmVJbWFnZTo6fk5hdGl2ZUltYWdlKCkK
IHsKKyAgICBpZiAobV9vYnNlcnZlcikKKyAgICAgICAgbV9vYnNlcnZlci0+cmVsZWFzZU5hdGl2
ZUltYWdlKG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUlt
YWdlLmgKaW5kZXggZDA2MmI5N2ZkNDQ0ZjBjZWFhMjJiZGQ4MzkwMDg4YzMzMjAyYzI1Mi4uNTg4
YjFjMDY1NDE3N2QxN2JhZjA3NDkyMWM0Y2IwOTBjMzIyMDNjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0zMCwyNyArMzAsNDggQEAK
ICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUltYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTmF0
aXZlSW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFnZT4geworY2xhc3MgTmF0aXZl
SW1hZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVJbWFnZT4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxOYXRpdmVJbWFnZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9i
c2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU5hdGl2ZUlt
YWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgPSAwOworICAgIHByb3RlY3RlZDoKKyAg
ICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgfTsKKwogICAgIHN0YXRpYyBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZShQbGF0Zm9ybUltYWdlUHRyJiYpOwor
ICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25z
dCBQbGF0Zm9ybUltYWdlUHRyJiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVJbWFnZSgpOwogCiAgICAgY29uc3QgUGxhdGZvcm1JbWFn
ZVB0ciYgcGxhdGZvcm1JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1JbWFnZTsgfQor
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBbHBo
YSgpIGNvbnN0OwogICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OwogCisg
ICAgdm9pZCBzZXRPYnNlcnZlcihPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlciA9IG9i
c2VydmVyOyB9CiAgICAgdm9pZCBjbGVhclN1YmltYWdlcygpOwogCiBwcml2YXRlOgogICAgIE5h
dGl2ZUltYWdlKFBsYXRmb3JtSW1hZ2VQdHImJik7CisgICAgTmF0aXZlSW1hZ2UoY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBQbGF0
Zm9ybUltYWdlUHRyIG1fcGxhdGZvcm1JbWFnZTsKKyAgICBPYnNlcnZlciogbV9vYnNlcnZlciB7
IG51bGxwdHIgfTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCit1c2luZyBOYXRpdmVJbWFnZUhhc2hNYXAgPSBIYXNo
TWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5hdGl2ZUltYWdlPj47CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OWYzYjFhZmU1
MzkwYTlmOWE0YTJiYjM5NjUxODc5Y2RmYmYxNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVyZW5jZS5oCkBAIC0wLDAg
KzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3VzaW5nIE5hdGl2ZUltYWdlUmVmZXJlbmNlID0gUmVmPE5hdGl2ZUltYWdlPjsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXgg
ZjUwNmRkZjQ5NTI3NWRiYjVjMDkwMjhjNjFhNDkzN2E5Yzg3NTk0Yy4uNDY4YTNkNTU0NTYyYTk2
NzYzNWRjMWI3Njk5ZmEyNTY2ZjRjYTg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBA
IC01Miw2ICs1Miw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmR1bXAoKSBjb25zdAogCiBEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3QoRGlzcGxheUxpc3QmJiBvdGhlcikKICAgICA6IG1faW1hZ2VCdWZm
ZXJzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9pbWFnZUJ1ZmZlcnMsIHsgfSkpCisgICAgLCBtX25h
dGl2ZUltYWdlcyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fbmF0aXZlSW1hZ2VzLCB7IH0pKQogICAg
ICwgbV9pdGVtcyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1faXRlbXMsIG51bGxwdHIpKQogICAgICwg
bV9kcmF3aW5nSXRlbUV4dGVudHMoc3RkOjpleGNoYW5nZShvdGhlci5tX2RyYXdpbmdJdGVtRXh0
ZW50cywgeyB9KSkKIHsKQEAgLTY4LDYgKzY5LDcgQEAgRGlzcGxheUxpc3Q6On5EaXNwbGF5TGlz
dCgpID0gZGVmYXVsdDsKIERpc3BsYXlMaXN0JiBEaXNwbGF5TGlzdDo6b3BlcmF0b3I9KERpc3Bs
YXlMaXN0JiYgb3RoZXIpCiB7CiAgICAgbV9pbWFnZUJ1ZmZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1faW1hZ2VCdWZmZXJzLCB7IH0pOworICAgIG1fbmF0aXZlSW1hZ2VzID0gc3RkOjpleGNo
YW5nZShvdGhlci5tX25hdGl2ZUltYWdlcywgeyB9KTsKICAgICBtX2l0ZW1zID0gc3RkOjpleGNo
YW5nZShvdGhlci5tX2l0ZW1zLCBudWxscHRyKTsKICAgICBtX2RyYXdpbmdJdGVtRXh0ZW50cyA9
IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9kcmF3aW5nSXRlbUV4dGVudHMsIHsgfSk7CiAgICAgcmV0
dXJuICp0aGlzOwpAQCAtNzksNiArODEsNyBAQCB2b2lkIERpc3BsYXlMaXN0OjpjbGVhcigpCiAg
ICAgICAgIG1faXRlbXMtPmNsZWFyKCk7CiAgICAgbV9kcmF3aW5nSXRlbUV4dGVudHMuY2xlYXIo
KTsKICAgICBtX2ltYWdlQnVmZmVycy5jbGVhcigpOworICAgIG1fbmF0aXZlSW1hZ2VzLmNsZWFy
KCk7CiB9CiAKIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFn
cyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAzNjhj
NzgwODczY2M0ZTA0OWUwMDFhZjE0ZjVhNmEyYmZlNGRlZDZlLi43ZjYwNzhmODg0ZmMzNWM0ZjVh
ODM4NGU1ZjI4OGUzNzE4ODRhMTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNzcsNiAr
NzcsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGFzVGV4dChBc1RleHRGbGFncykgY29uc3Q7CiAK
ICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2VCdWZmZXJzOyB9CisgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRp
dmVJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyQ2xpZW50KEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50
Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyQ2xpZW50KEl0ZW1CdWZm
ZXJXcml0aW5nQ2xpZW50Kik7CkBAIC0xNTMsMTQgKzE1NCwyNCBAQCBwcml2YXRlOgogICAgICAg
ICBtX2RyYXdpbmdJdGVtRXh0ZW50cy5hcHBlbmQoV1RGTW92ZShleHRlbnQpKTsKICAgICB9CiAK
LSAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoUmVmPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIGlt
YWdlQnVmZmVyKQorICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYgaW1hZ2VCdWZmZXIpCiAgICAgewotICAgICAgICBtX2ltYWdlQnVmZmVycy5hZGQoaW1hZ2VC
dWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGltYWdlQnVmZmVy
KSk7CisgICAgICAgIG1faW1hZ2VCdWZmZXJzLmVuc3VyZShpbWFnZUJ1ZmZlci5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgeworICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWYo
aW1hZ2VCdWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiAKKyAgICB2b2lkIGNhY2hlTmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVJbWFnZXMu
ZW5zdXJlKGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBbJl0oKSB7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVJlZihpbWFnZSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICAK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5k
bGUpOwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOworICAgIE5hdGl2
ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRlbUJ1
ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8T3B0aW9uYWw8RmxvYXRSZWN0Pj4gbV9kcmF3aW5n
SXRlbUV4dGVudHM7CiAgICAgYm9vbCBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyB7IHRydWUg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYzdm
OGFjODU4MDkyYTI2MDgyZTg1Y2I4ZWRkMjczNDk2NTNkNGM4NS4uZWMyZDZlYTU1MDhhMjIwODUy
OTdhNTViYzVjMTczODAwYzVhNWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKQEAgLTMzMCwxMCArMzMwLDYgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0
cm95KCkKICAgICAgICAgZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkufkRyYXdMaW5lc0ZvclRleHQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6IHsKLSAgICAgICAgZ2V0PERyYXdOYXRpdmVJbWFnZT4oKS5+RHJhd05hdGl2ZUltYWdl
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6
IHsKICAgICAgICAgZ2V0PERyYXdQYXRoPigpLn5EcmF3UGF0aCgpOwogICAgICAgICByZXR1cm47
CkBAIC00NDAsNiArNDM2LDEwIEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdJbWFnZUJ1
ZmZlcj46OnZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOworICAgICAgICByZXR1
cm47CisgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdMaW5lPjo6dmFsdWUp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5j
cHAKaW5kZXggYzk4Zjg0ODMwZTAxMGFhZWVlYzJmYzJlODEzZDgwY2NiYjc0ZjY5MS4uYTFhZDQ2
MDFhNmQ5MjJkYzk3ODAwODRjODM0MTBmZDVjNWVlYWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcApAQCAtMjYwLDcgKzI2MCw2IEBAIGJvb2wgaXNJbmxpbmVJ
dGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9y
VGV4dDoKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6CkBAIC0yOTAsNiArMjg5LDcgQEAgYm9vbCBpc0lu
bGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRv
Y3VtZW50TWFya2VyOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1JlY3Q6CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggYzdlZGQ3NThkOThmZTE5MjdhYzUy
MzY1NGUxZGY0NjkzOGEwZjI3ZC4uYjVmNDU0MzE1Yjg5ZjEzMTc4MWM0NWJlMGJhNWRhNTg2MzIz
YjRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDU3LDI5ICs0
NTcsMjYgQEAgdm9pZCBEcmF3SW1hZ2VCdWZmZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWcKIAogc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkKIHsK
LSAgICB0cy5kdW1wUHJvcGVydHkoInJlbmRlcmluZy1yZXNvdXJjZS1pZGVudGlmaWVyIiwgaXRl
bS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJp
bWFnZS1idWZmZXItaWRlbnRpZmllciIsIGl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkpOwog
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic291cmNlLXJlY3QiLCBpdGVtLnNvdXJjZSgpKTsKICAgICB0
cy5kdW1wUHJvcGVydHkoImRlc3QtcmVjdCIsIGl0ZW0uZGVzdGluYXRpb25SZWN0KCkpOwogICAg
IHJldHVybiB0czsKIH0KIAotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoTmF0aXZl
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKLSAgICA6IG1faW1hZ2UoaW1hZ2UpCi0gICAgLCBtX2ltYWdlU2l6
ZShpbWFnZVNpemUpCi0gICAgLCBtX2Rlc3RpbmF0aW9uUmVjdChkZXN0UmVjdCkKLSAgICAsIG1f
c3JjUmVjdChzcmNSZWN0KQotICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCitOT19SRVRVUk5fRFVF
X1RPX0FTU0VSVCB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3QKIHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3ZvaWQgRHJhd05h
dGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlJiBp
bWFnZSkgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2lt
YWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKKyAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25S
ZWN0LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiB7CiAg
ICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KKyAgICB0cy5kdW1wUHJvcGVydHkoImltYWdl
LWlkZW50aWZpZXIiLCBpdGVtLmltYWdlSWRlbnRpZmllcigpKTsKICAgICB0cy5kdW1wUHJvcGVy
dHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJk
ZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKICAgICByZXR1cm4gdHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBhODYxMWM3NjFmMWRhMzg1NmJlNDMyMTM2
ZjQxZTcyZDE4NTdlNGU5Li5kNjliNmU4MDBhZjA1ZDBmZGFlNmY4ZWIzNmQ0NTA0NzhlNWMzMjFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEyNDQsMTUgKzEyNDQsMTUg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVl
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gdHJ1ZTsKIAotICAg
IERyYXdJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotICAgICAg
ICA6IG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKKyAgICBEcmF3SW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlt
YWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAg
ICAgICAgOiBtX2ltYWdlQnVmZmVySWRlbnRpZmllcihpbWFnZUJ1ZmZlcklkZW50aWZpZXIpCiAg
ICAgICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCiAgICAgICAgICwgbV9zcmNSZWN0
KHNyY1JlY3QpCiAgICAgICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiAgICAgewogICAgIH0KIAot
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorICAg
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsgfQogICAgIEZsb2F0UmVjdCBzb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGluYXRp
b25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KICAgICBJbWFnZVBh
aW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CkBAIC0x
MjY1LDcgKzEyNjUsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
UmVjdDsgfQogCiBwcml2YXRlOgotICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3Jl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25S
ZWN0OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMg
bV9vcHRpb25zOwpAQCAtMTI3NCw3MSArMTI3NCwzNiBAQCBwcml2YXRlOgogY2xhc3MgRHJhd05h
dGl2ZUltYWdlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1U
eXBlID0gSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5s
aW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0g
PSB0cnVlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwor
ICAgIERyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVu
dGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKKyAgICAgICAgOiBtX2ltYWdlSWRlbnRpZmllcihpbWFnZUlkZW50aWZpZXIp
CisgICAgICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQorICAgICAgICAsIG1fZGVzdGluYXRp
b25SZWN0KGRlc3RSZWN0KQorICAgICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICAgICAs
IG1fb3B0aW9ucyhvcHRpb25zKQorICAgIHsKKyAgICB9CiAKKyAgICBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUlkZW50
aWZpZXI7IH0KICAgICBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3JjUmVjdDsgfQogICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CisgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShH
cmFwaGljc0NvbnRleHQmKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYs
IE5hdGl2ZUltYWdlJikgY29uc3Q7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJv
dW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvblJlY3Q7IH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8RHJhd05hdGl2ZUltYWdlPiBkZWNvZGUoRGVjb2RlciYpOwotCiBwcml2YXRl
OgotICAgIFJlZjxOYXRpdmVJbWFnZT4gbV9pbWFnZTsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgbV9pbWFnZUlkZW50aWZpZXI7CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwog
ICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0
OwogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAKLXRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Ci12b2lkIERyYXdOYXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBtX2ltYWdlOwotICAgIGVuY29kZXIgPDwgbV9p
bWFnZVNpemU7Ci0gICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uUmVjdDsKLSAgICBlbmNvZGVy
IDw8IG1fc3JjUmVjdDsKLSAgICBlbmNvZGVyIDw8IG1fb3B0aW9uczsKLX0KLQotdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPERyYXdOYXRpdmVJbWFnZT4gRHJhd05hdGl2ZUltYWdl
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxSZWY8TmF0aXZlSW1h
Z2U+PiBpbWFnZTsKLSAgICBkZWNvZGVyID4+IGltYWdlOwotICAgIGlmICghaW1hZ2UpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxGbG9hdFNpemU+IGltYWdl
U2l6ZTsKLSAgICBkZWNvZGVyID4+IGltYWdlU2l6ZTsKLSAgICBpZiAoIWltYWdlU2l6ZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVz
dGluYXRpb25SZWN0OwotICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25SZWN0OwotICAgIGlmICgh
ZGVzdGluYXRpb25SZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBzcmNSZWN0OwotICAgIGRlY29kZXIgPj4gc3JjUmVjdDsKLSAgICBp
ZiAoIXNyY1JlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25h
bDxJbWFnZVBhaW50aW5nT3B0aW9ucz4gb3B0aW9uczsKLSAgICBkZWNvZGVyID4+IG9wdGlvbnM7
Ci0gICAgaWYgKCFvcHRpb25zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
cmV0dXJuIHt7ICppbWFnZSwgKmltYWdlU2l6ZSwgKmRlc3RpbmF0aW9uUmVjdCwgKnNyY1JlY3Qs
ICpvcHRpb25zIH19OwotfQotCiBjbGFzcyBEcmF3UGF0dGVybiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBiZjNjYjM0MDE0
MWQzZWY3YTAxNmU0ZTllZWM1N2NhZWVhZGRhY2E4Li5jYTczYjdhYjllYzBmNTBkZGNhNzcxMDI4
YWNiYzM3NmRiOTI4NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCkBAIC0xODcsMTQgKzE4NywxNyBAQCBJbWFnZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdU
aWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdAogCiB2b2lk
IFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVm
ZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGltYWdlQnVmZmVy
LmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlSW1hZ2VCdWZm
ZXIobWFrZVJlZihpbWFnZUJ1ZmZlcikpOworICAgIC8vIEZJWE1FOiBDYWxsIGltYWdlQnVmZmVy
LmZsdXNoRHJhd2luZ0NvbnRleHQoKSB3aGVuIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTg3NzM+
IGlzIGZpeGVkLgorICAgIG1fZGlzcGxheUxpc3QuY2FjaGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
cik7CiAgICAgYXBwZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9p
ZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0g
ICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMpOworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRl
LT5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZl
SW1hZ2UoaW1hZ2UpOworICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTY1OTZi
ZTgyMmJlNzljMWVmYWMzZTgxMTczYzNhMjM0MGU3OWMxOS4uZmZhMWZlMzgxZDZjMjQzZDZjMzUw
N2YyODk3ZTEzOWY1ZjI4ZTcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUo
KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBl
KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUp
IHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYp
IHsgfQogICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKaW5kZXggNWRmMGUwMDU3MDE5N2QxYzRhM2JkYmJlYTM3OTUyZjI4ZGE5MzI1My4u
YWIxNjNkZTBjYzYzYzU5YjIzZmNlNjJmYzVkM2EzZGQ2NTQ1NDdlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMzQsMTAgKzM0LDExIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZXBsYXllcjo6UmVwbGF5
ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxp
c3QsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1hZ2VCdWZmZXJzLCBEZWxlZ2F0ZSogZGVs
ZWdhdGUpCitSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1h
Z2VCdWZmZXJzLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqIG5hdGl2ZUltYWdlcywgRGVsZWdh
dGUqIGRlbGVnYXRlKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2Rpc3BsYXlM
aXN0KGRpc3BsYXlMaXN0KQogICAgICwgbV9pbWFnZUJ1ZmZlcnMoaW1hZ2VCdWZmZXJzID8gKmlt
YWdlQnVmZmVycyA6IG1fZGlzcGxheUxpc3QuaW1hZ2VCdWZmZXJzKCkpCisgICAgLCBtX25hdGl2
ZUltYWdlcyhuYXRpdmVJbWFnZXMgPyAqbmF0aXZlSW1hZ2VzIDogbV9kaXNwbGF5TGlzdC5uYXRp
dmVJbWFnZXMoKSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9CkBAIC01MSwxMCAr
NTIsMTcgQEAgdm9pZCBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKIAogICAg
IGlmIChpdGVtLmlzPERyYXdJbWFnZUJ1ZmZlcj4oKSkgewogICAgICAgICBhdXRvJiBkcmF3SXRl
bSA9IGl0ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgaWYgKGF1dG8qIGltYWdl
QnVmZmVyID0gbV9pbWFnZUJ1ZmZlcnMuZ2V0KGRyYXdJdGVtLnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpKSkKKyAgICAgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gbV9pbWFnZUJ1ZmZl
cnMuZ2V0KGRyYXdJdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpKSkKICAgICAgICAgICAgIGRy
YXdJdGVtLmFwcGx5KG1fY29udGV4dCwgKmltYWdlQnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICAKKyAgICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+KCkpIHsKKyAgICAg
ICAgYXV0byYgZHJhd0l0ZW0gPSBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7CisgICAgICAg
IGlmIChhdXRvKiBpbWFnZSA9IG1fbmF0aXZlSW1hZ2VzLmdldChkcmF3SXRlbS5pbWFnZUlkZW50
aWZpZXIoKSkpCisgICAgICAgICAgICBkcmF3SXRlbS5hcHBseShtX2NvbnRleHQsICppbWFnZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpdGVtLmFwcGx5KG1fY29udGV4dCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCA5MmVjNjg4OWMzNWVm
ODZkM2Y5ZTk0YmVjNjY2ZTdhNzhhZTU5N2NmLi4yYzAxOWVlMGNjOGEzNmUyYzRmNWQyNTMwMjAw
Zjg3NWQxNmFkZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlcGxheWVyKTsKIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0
IEltYWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5
TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJ
bWFnZUhhc2hNYXAqID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9w
dHI8RGlzcGxheUxpc3Q+IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9
LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKQEAgLTU5LDYgKzU5LDcgQEAgcHJpdmF0
ZToKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBjb25zdCBEaXNwbGF5TGlz
dCYgbV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIG1faW1hZ2VC
dWZmZXJzOworICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbV9uYXRpdmVJbWFnZXM7CiAg
ICAgRGVsZWdhdGUqIG1fZGVsZWdhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IDNkYmFhZjlmMmVj
NmJkMTEyN2Q1MWMxMTdlMGMxYzcwNTZjZDI1ZDMuLjc2Y2NmNmIzNTk1NDZkMjU1NjI4OTY1ZGE2
YjdiMzA3NjA0MWRjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC03MCw3ICs3MCw4IEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBpZiAoIWRpc3BsYXlMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
Y29uc3QgYXV0byYgaW1hZ2VCdWZmZXJzID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90
ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKTsKLSAgICAgICAgICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpj
b250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCB0aGlzIH07CisgICAgICAgICAg
ICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVt
b3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOworICAgICAgICAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OmNvbnRleHQoKSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsIHRo
aXMgfTsKICAgICAgICAgICAgIHJlcGxheWVyLnJlcGxheSgpOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGVhNTY0MzI2MWUyOTllMTBkMzkxNTA0Yjc1MDUw
OTk5NjI3NDRjYTkuLmViMDBiNmNkNGExOGI4NTdkMTdjZWNmNDI1MmQyMzM1ZTY5OTgzYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTIxNiw2ICsyMTYsMTEgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpnZXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRGb3JtYXQsIEkKICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkltYWdlRGF0YVJlZmVyZW5j
ZShXVEZNb3ZlKGltYWdlRGF0YSkpKTsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKK3sKKyAgICBtX3Jl
bW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlKSk7Cit9CisK
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAg
ICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtMjU3LDggKzI2Miw2IEBAIE9wdGlvbmFsPERpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6ZGVjCiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdJ
bWFnZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRD
cmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxl
TG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2U6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdOYXRp
dmVJbWFnZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXRoOgogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpEcmF3UGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAg
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAtMzAxLDYgKzMw
NCw3IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpE
cmF3SW1hZ2VCdWZmZXI6CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0OgogICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmlu
ZGV4IGIzNmI5ZGQ2MDY0ZWU1YTUxNjNjNjhlNDE5NDc2MzFmZTA5MTMxMzIuLjAyZDk0YTg5NzNk
ZTc4YTUxM2VlYjliNDRjNzc2ZWRlNWZlODAyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAt
NDUsNiArNDUsNyBAQCBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07CiB9CiBjbGFzcyBG
bG9hdFNpemU7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGVudW0gY2xhc3MgQ29sb3JTcGFjZSA6IHVp
bnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogfQpAQCAtMTA1LDYgKzEw
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmll
ciwgdWludDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURh
dGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6
OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKKyAg
ICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKICAg
ICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0
aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluCmluZGV4IDZmMmUyYWJkZjkyNmJjZDRhMDRjMjM1NThlNjViOTk2YTVhMDYwODIu
LmZjNDk4MzZkZWEwYzQ2OWIzMDk1NDcwMTZmZTBhMzU0MjA4ZmFmZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNiw2ICsyNiw3IEBAIG1lc3NhZ2VzIC0+
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAgICAgQ3JlYXRlSW1hZ2VC
dWZmZXIoV2ViQ29yZTo6RmxvYXRTaXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29sb3JT
cGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlm
aWVyLCB1aW50NjRfdCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAgIEdldEltYWdlRGF0YShl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQs
IFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVm
ZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKKyAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYkNv
cmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlIG5hdGl2ZUltYWdlKQogICAgIERpZENyZWF0ZVNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRl
bnRpZmllcikKICAgICBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcAppbmRleCA1ZTBhNjc0Mjc2NGRmZDQyMGFlYmFlYmI5OGUyZDEwZGFiNTU0OWQ0Li5j
MzMyZDJmNzA0ZTE1ODRkNmMwZTVjZmJkYjdlZDU2ZGM0YjJjMzY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
Y3BwCkBAIC00MiwxMCArNDIsMTggQEAgSW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNlQ2FjaGU6
OmNhY2hlZEltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcgogICAgIHJldHVy
biBtX2ltYWdlQnVmZmVycy5nZXQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAor
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFn
ZT4mJiBpbWFnZSkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbmF0aXZlSW1hZ2VzLmFkZChp
bWFnZS0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFdURk1vdmUoaW1hZ2UpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCiB2
b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGlm
IChtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAg
ICAgICAgcmV0dXJuOworICAgIGlmIChtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOwogICAgIC8vIENhY2hpbmcgdGhlIHJl
bW90ZSByZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0Lgog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKaW5kZXggYTRlNDI4NjY5
Mjc5ZjFlYWY5ZDNlODUyNTUyYjQyNDQ0OTlhNDliNC4uYzVkZGU2ODFiOWJhYjQzN2RkMjdjZTdi
ZWFmNmU1OWFjOWViMjhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC00NCwxMiArNDQsMTUgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4mJik7CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZUlt
YWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAKICAg
ICBjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9CisgICAgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1h
Z2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsg
fQogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVm
ZmVyczsKKyAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IGIyMjY4OGUwZGJjMTkyZWI2N2Y3OGI1MTUyNGVjNTFlZDcxOWQzMzMu
LmNhZTlmNGFkNjBlNTM1MDhkNGNiMWJhMDEyODQyMjlmOWE1NjY0ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjE4LDcgKzIxOCw3IEBAIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpQ
bGF5YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
Ok1lZGlhUGxheWVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVNlc3Npb25J
ZGVudGlmaWVyJywKLSAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlJywKKyAgICAgICAgJ1dl
YkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlJywKICAgICAgICAgJ1dlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3knLAogICAg
ICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDE1NzEzZDVjZTkyZDI5YzE0OTM3NzVjMjNlYjFj
ZGVkNjZjN2RiOWUuLjljMjZkYjRlOWE5ZjZiYTcyZTQ4MjBiYjQwNmMyY2ZiZGUxMTNlOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MTExNSw2ICsxMTE1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxOYXRpdmVJbWFnZT4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPE5hdGl2ZUkKICAgICBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsK
IAorICAgIGVuY29kZXIgPDwgaW1hZ2UtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwog
ICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCkBAIC0xMTI1LDYgKzExMjYsMTAgQEAgT3B0aW9u
YWw8UmVmPE5hdGl2ZUltYWdlPj4gQXJndW1lbnRDb2RlcjxSZWY8TmF0aXZlSW1hZ2U+Pjo6ZGVj
b2RlKERlY29kZXImIGRlY28KICAgICBpZiAoIWRpZENyZWF0ZUdyYXBoaWNzQ29udGV4dC5oYXNW
YWx1ZSgpIHx8ICFkaWRDcmVhdGVHcmFwaGljc0NvbnRleHQudmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhbmRsZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xMTQxLDYg
KzExNDYsMTAgQEAgT3B0aW9uYWw8UmVmPE5hdGl2ZUltYWdlPj4gQXJndW1lbnRDb2RlcjxSZWY8
TmF0aXZlSW1hZ2U+Pjo6ZGVjb2RlKERlY29kZXImIGRlY28KICAgICBpZiAoIW5hdGl2ZUltYWdl
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgbmF0aXZlSW1hZ2UgPSBOYXRp
dmVJbWFnZTo6Y3JlYXRlKG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCksIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKwogICAgIHJldHVybiBtYWtlUmVmKCpuYXRpdmVJbWFnZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMDFlNTNlMTVjNGIxZDFmNTBhZmQ3MGJk
Y2M5YjE2ODQ0OTZlNWQ2My4uNDI3Y2M0NTE2M2IzNTA2NjlhODNlM2Q3OGEyZjI2ZTJhZWRhYjM1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGlj
OgogICAgICAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CisgICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5yZWxl
YXNlSW1hZ2VCdWZmZXIobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVsZWFzZVJlbW90ZVJlc291cmNlKG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKQEAgLTgxLDYgKzgyLDggQEAgcHJv
dGVjdGVkOgogICAgICAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KG1ha2VXZWFr
UHRyKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpOworICAgICAgICBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVJbWFnZUJ1ZmZl
cigqdGhpcyk7CisKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLnNldEl0
ZW1CdWZmZXJDbGllbnQodGhpcyk7CiAgICAgICAgIG1fZHJhd2luZ0NvbnRleHQuZGlzcGxheUxp
c3QoKS5zZXRUcmFja3NEcmF3aW5nSXRlbUV4dGVudHMoZmFsc2UpOwogICAgIH0KQEAgLTE4MSw2
ICsxODQsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICBkaXNwbGF5TGlzdC5jbGVhcigpOwogICAg
IH0KIAorICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYgaW1h
Z2UpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgfQorCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZl
cihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0yMDksOCArMjE4LDYgQEAgcHJvdGVjdGVkOgogICAg
ICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2U+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3SW1hZ2U+KCkpOwogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0xpbmVzRm9yVGV4dDoKICAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVu
Y29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0xpbmVzRm9yVGV4dD4o
aXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdMaW5lc0ZvclRleHQ+KCkpOwotICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OgotICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U+KCkpOwogICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdGg6CiAgICAgICAgICAgICByZXR1cm4gSVBDOjpF
bmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXRo
PihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdGg+KCkpOwogICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm46CkBAIC0yNTMs
NiArMjYwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgorICAgICAgICBj
YXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKICAgICAg
ICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxh
eWVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGIxYzAz
YjNhZGE4NzQ4NDJkYzE3MzAzZGNhNDE5OTA5M2IwNTM4ZmEuLjI0M2JhOWNhMTE3OGZjODk5OTUx
NzdiNmMyM2QyYTY4MzNkZmU2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKQEAgLTEwMSw3ICsxMDEsNiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaQogCiAg
ICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgaW1hZ2VCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Ci0gICAgICAgIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXItPnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIHJl
dHVybiBpbWFnZUJ1ZmZlcjsKICAgICB9CiAKQEAgLTEzOSw5ICsxMzgsMTMgQEAgdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnN1Ym1pdERpc3BsYXlMaXN0KGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGkKICAgICB9CiB9CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYo
aW1hZ2UpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9CisKIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5yZWxlYXNlSW1hZ2VCdWZmZXIocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCmluZGV4IGFiYTk2MmU0MDg5MzhjZjBmYjJlMzRkNWJhMDgwM2EyZTBjYTQ3
MjcuLmRkMDQ4MmM4YjYxZmMwY2Y0NjBlN2ZlMjQyN2EyNTg0ZGRkNDljMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
c3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVy
SWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBm
bHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CiAgICAgdm9pZCByZWxl
YXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
IAogICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKQEAgLTkx
LDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0
ZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgYmFja2VuZFNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6Q29s
b3JTcGFjZSwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmx1c2hEaXNwbGF5TGlzdFdhc0NvbW1pdHRlZChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogCi0gICAgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IG1fcmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OworICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSB7ICp0aGlzIH07CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0cjxEaXNwbGF5TGlzdFdyaXRl
ckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwogICAgIERlcXVlPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gbV9pZGVudGlmaWVyc09mUmV1c2Fi
bGVIYW5kbGVzOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzT2ZIYW5kbGVzQXZhaWxhYmxlRm9yV3JpdGluZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCBmYWZmOTJhMDRkZGZjYmJkNTgz
ODZlYzliZmFhZDllMTM1NWE1NTZmLi45MDRhYWVhZDhjYzcxZTg4ZjY0MmI0YjUzNmU2OWFlMWU4
OTM5ODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC0yOSwyMCAr
MjksMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OkltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlcikKK1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KQorICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkocmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbWFnZUJ1
ZmZlcnMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgaW1hZ2VCdWZmZXIpOworfQor
Cit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX2lt
YWdlQnVmZmVycy5hZGQoaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCks
IG1ha2VXZWFrUHRyKGltYWdlQnVmZmVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAogSW1hZ2VCdWZmZXIqIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eTo6Y2FjaGVkSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gbV9pbWFnZUJ1ZmZl
cnMuZ2V0KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIG1faW1hZ2VC
dWZmZXJzLmdldChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLmdldCgpOwogfQogCiB2b2lk
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVyKFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC01MSw2ICs1
NSwyOCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZUltYWdlQnVmZmVy
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQs
IGZvdW5kKTsKIH0KIAordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQoreworICAgIG1fbmF0aXZlSW1hZ2VzLmVuc3VyZShp
bWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZdKCkgeworICAgICAgICAvLyBT
ZXQgaXRzZWxmIGFzIGFuIG9ic2VydmVyIHRvIE5hdGl2ZUltYWdlLCBzbyByZWxlYXNlTmF0aXZl
SW1hZ2UoKQorICAgICAgICAvLyBnZXRzIGNhbGxlZCB3aGVuIE5hdGl2ZUltYWdlIGlzIGJlaW5n
IGRlbGVsZXRlZC4KKyAgICAgICAgaW1hZ2Uuc2V0T2JzZXJ2ZXIodGhpcyk7CisKKyAgICAgICAg
Ly8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUgdGhpcyByZXNvdXJjZS4KKyAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlV2Vha1B0cihpbWFnZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1f
bmF0aXZlSW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyBy
ZXNvdXJjZS4KKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3Rl
UmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuaAppbmRleCBiZGU4MTVhMTNjMWQ5NTFkNTIwNDkzNjhhODVjOGM0MGNh
MTRkY2YzLi5jY2QzOGM3YjQyNzI0MDhmYTJlNDFiNTEwNDk2NWJlYmI3ZDRmM2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAKQEAgLTM2LDE4ICszNywyNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSB7Citj
bGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CisKK2NsYXNzIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpOYXRpdmVJbWFnZTo6T2JzZXJ2ZXIgewogcHVi
bGljOgotICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpID0gZGVmYXVsdDsKKyAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7CiAKLSAg
ICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciopOworICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpJbWFnZUJ1ZmZlciYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJ
bWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsK
KwogcHJpdmF0ZToKLSAgICB1c2luZyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5SGFzaE1hcCA9IEhh
c2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcio+OworICAgIHVzaW5nIEltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPj47CisgICAgdXNpbmcgTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+
PjsKKyAgICAKKyAgICB2b2lkIHJlbGVhc2VOYXRpdmVJbWFnZShXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOwogCi0gICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eUhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CisgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VC
dWZmZXJzOworICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKKyAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>