<?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>155444</bug_id>
          
          <creation_ts>2016-03-14 10:36:17 -0700</creation_ts>
          <short_desc>Rename FrameData to ImageFrameData and move it to a separate file</short_desc>
          <delta_ts>2017-08-21 12:16:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>159819</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>155422</dependson>
    
    <dependson>158684</dependson>
          <blocked>155322</blocked>
    
    <blocked>155456</blocked>
    
    <blocked>159679</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>simonjam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1174524</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 10:36:17 -0700</bug_when>
    <thetext>This is work towards CG asynchronous image decoding: https://bugs.webkit.org/show_bug.cgi?id=155322. The plan to move the caching of the ImageFrameData from BitmapImage to ImageSource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174526</commentid>
    <comment_count>1</comment_count>
      <attachid>273988</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 10:38:04 -0700</bug_when>
    <thetext>Created attachment 273988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174530</commentid>
    <comment_count>2</comment_count>
      <attachid>273990</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 10:46:47 -0700</bug_when>
    <thetext>Created attachment 273990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174544</commentid>
    <comment_count>3</comment_count>
      <attachid>273992</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 11:14:18 -0700</bug_when>
    <thetext>Created attachment 273992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174584</commentid>
    <comment_count>4</comment_count>
      <attachid>273995</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-14 11:49:02 -0700</bug_when>
    <thetext>Created attachment 273995
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183636</commentid>
    <comment_count>5</comment_count>
      <attachid>273995</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-04-13 22:29:13 -0700</bug_when>
    <thetext>Comment on attachment 273995
Patch for review

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

Could you please rebase this patch so we can confirm it builds and does not regress any tests? For that reason, marking r-.

&gt; Source/WebCore/PlatformEfl.cmake:126
&gt; +    platform/graphics/ImageFrameData.cpp

Since this is in CMakeList.txt, it is not needed in the individual Platform{Efl/Win/WinCairo/Gtk/etc.} files.

There actually seems to be a fair amount of unneeded duplication in these files. I&apos;ll try to get that cleaned up soon.

&gt; Source/WebCore/PlatformGTK.cmake:97
&gt; +    platform/graphics/ImageFrameData.cpp

Ditto.

&gt; Source/WebCore/PlatformWinCairo.cmake:42
&gt; +    platform/graphics/ImageFrameData.cpp

Ditto.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:-89
&gt; -

Nice to have this removed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184326</commentid>
    <comment_count>6</comment_count>
      <attachid>276545</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-15 22:19:48 -0700</bug_when>
    <thetext>Created attachment 276545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184337</commentid>
    <comment_count>7</comment_count>
      <attachid>276549</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-15 23:04:41 -0700</bug_when>
    <thetext>Created attachment 276549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184338</commentid>
    <comment_count>8</comment_count>
      <attachid>276550</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-15 23:16:14 -0700</bug_when>
    <thetext>Created attachment 276550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184339</commentid>
    <comment_count>9</comment_count>
      <attachid>276551</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-15 23:25:21 -0700</bug_when>
    <thetext>Created attachment 276551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184573</commentid>
    <comment_count>10</comment_count>
      <attachid>276621</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-17 20:27:41 -0700</bug_when>
    <thetext>Created attachment 276621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184719</commentid>
    <comment_count>11</comment_count>
      <attachid>273995</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-04-18 10:28:35 -0700</bug_when>
    <thetext>Comment on attachment 273995
Patch for review

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

&gt;&gt; Source/WebCore/PlatformEfl.cmake:126
&gt;&gt; +    platform/graphics/ImageFrameData.cpp
&gt; 
&gt; Since this is in CMakeList.txt, it is not needed in the individual Platform{Efl/Win/WinCairo/Gtk/etc.} files.
&gt; 
&gt; There actually seems to be a fair amount of unneeded duplication in these files. I&apos;ll try to get that cleaned up soon.

This file was removed but the platform specific cpp file: ImageFrameDataCairo.cpp was added instead.

&gt;&gt; Source/WebCore/PlatformGTK.cmake:97
&gt;&gt; +    platform/graphics/ImageFrameData.cpp
&gt; 
&gt; Ditto.

This file was removed but the platform specific cpp file: ImageFrameDataCairo.cpp was added instead.

&gt;&gt; Source/WebCore/PlatformWinCairo.cmake:42
&gt;&gt; +    platform/graphics/ImageFrameData.cpp
&gt; 
&gt; Ditto.

This file was removed but the platform specific cpp file: ImageFrameDataCairo.cpp was added instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198530</commentid>
    <comment_count>12</comment_count>
      <attachid>280332</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-02 08:51:51 -0700</bug_when>
    <thetext>Created attachment 280332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198537</commentid>
    <comment_count>13</comment_count>
      <attachid>280334</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-02 09:04:26 -0700</bug_when>
    <thetext>Created attachment 280334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198551</commentid>
    <comment_count>14</comment_count>
      <attachid>280334</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-02 09:40:30 -0700</bug_when>
    <thetext>Comment on attachment 280334
Patch

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

Since this is all about refactoring, I was a little more picky with my comments than I would have been otherwise.

I’m going to say review- because I see some things that should be fixed.

&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:72
&gt; +    m_frames.grow(1);
&gt; +    m_frames[0] = ImageFrameData(image);

Really surprised that this patch removes the optimization of doing a WTFMove on the image passed in. That needs to be restored.

This should be:

    m_frames.reserveInitialCapacity(1);
    m_frames.uncheckedAppend(WTFMove(image));

Or alternatively could initialize the vector with a size of 1 and then assign the single element to it. There is no reason to call the grow function. But it’s nice to avoid constructing the empty ImageFrameData just to overwrite it a moment later, which is why I like uncheckedAppend better.

Even better would be adding a constructor to Vector that lets us make one containing a single object with move semantics. Right now we don’t have that constructor, though. A lot that are close, but not quite.

&gt; Source/WebCore/platform/graphics/BitmapImage.h:53
&gt; +template&lt;&gt; struct VectorTraits&lt;WebCore::ImageFrameData&gt; : public SimpleClassVectorTraits {
&gt; +    static const bool canInitializeWithMemset = false; // Not all ImageFrameData members initialize to 0.
&gt; +};

Seems like this belongs in the ImageFrameData header, not the BitmapImage header. It’s a mistake to have this somewhere not right next to the class it&apos;s based on.

No need for the &quot;public&quot; here. I also think we should fix this so that all the members initialize to zero.

&gt; Source/WebCore/platform/graphics/ImageFrameData.h:27
&gt; +#ifndef ImageFrameData_h
&gt; +#define ImageFrameData_h

New files should use #pragma once, not the old style guards.

&gt; Source/WebCore/platform/graphics/ImageFrameData.h:29
&gt; +#include &quot;Color.h&quot;

We don’t need to include &quot;Color.h&quot; just to declare functions that return a Color. It can be forward-declared instead.

&gt; Source/WebCore/platform/graphics/ImageFrameData.h:37
&gt; +typedef short SubsamplingLevel;

Please use &quot;using&quot; instead of typedef in new code.

&gt; Source/WebCore/platform/graphics/ImageFrameData.h:41
&gt; +const SubsamplingLevel MinSubsamplingLevel = 0;
&gt; +const SubsamplingLevel MaxSubsamplingLevel = 3;
&gt; +const SubsamplingLevel DefaultSubsamplingLevel = MinSubsamplingLevel;

Should this be an enum instead of an integer? Also, why did we chose the type &quot;short&quot; for a value in the range [0..3]? Seems like it could equally well be int or uint8_t.

&gt; Source/WebCore/platform/graphics/ImageFrameData.h:54
&gt; +enum ImageFrameCaching {
&gt; +    CacheNone,
&gt; +    CacheMetadata,
&gt; +    CacheImage,
&gt; +    CacheMetadataAndImage
&gt; +};
&gt; +
&gt; +enum ImageFrameStatus {
&gt; +    FrameEmpty,
&gt; +    FramePartial,
&gt; +    FrameComplete
&gt; +};

Seems like these should have shorter names, be members of ImageFrameData, and use enum class so the names don’t have to be so repetitive.

&gt; Source/WebCore/platform/graphics/ImageFrameData.h:61
&gt; +namespace NativeImage {
&gt; +IntSize size(const NativeImagePtr&amp;);
&gt; +bool hasAlpha(const NativeImagePtr&amp;);
&gt; +Color singlePixelSolidColor(const NativeImagePtr&amp;);
&gt; +void clear(const NativeImagePtr&amp;);
&gt; +}

I know this is not new, but it seems really strange to group these in a namespace and also to have them here instead of in NativeImagePtr.h. We should turn the NativeImagePtr typedef into a PlatformImage class.

&gt; Source/WebCore/platform/graphics/ImageFrameData.h:63
&gt; +class ImageDecoder;

Forward declarations should go *before* things that a re actually defined in this file.

&gt; Source/WebCore/platform/graphics/ImageFrameData.h:65
&gt; +class ImageFrameData {

Why have &quot;Data&quot; in the name of this class? Why not just ImageFrame?

Is it really significantly better to have this be a class rather than a struct? I guess maybe, but it does mean there are  a lot of getter functions to write.

&gt; Source/WebCore/platform/graphics/ImageFrameData.h:67
&gt; +    ImageFrameData();

Seems quite unfortunate that we have to have this fairly expensive non-inlined default constructor.

&gt; Source/WebCore/platform/graphics/ImageFrameData.h:68
&gt; +    ImageFrameData(const NativeImagePtr&amp;);

Shouldn’t this take NativeImagePtr&amp;&amp; instead? This takes ownership.

&gt; Source/WebCore/platform/graphics/cairo/BitmapImageCairo.cpp:67
&gt; +void clear(const RefPtr&lt;cairo_surface_t&gt;&amp;)
&gt; +{
&gt; +}

Why is it OK to have an empty implementation here? It seems like silently failing to clear would be a problem. Maybe calls to clear should all be inside #if CACHE_SUBIMAGES? I don’t think &quot;clear&quot; expresses the purpose of this function well enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204364</commentid>
    <comment_count>15</comment_count>
      <attachid>281796</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-21 17:28:24 -0700</bug_when>
    <thetext>Created attachment 281796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204370</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-21 17:35:49 -0700</bug_when>
    <thetext>Attachment 281796 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/imageFrameData.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/imageFrameData.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207722</commentid>
    <comment_count>17</comment_count>
      <attachid>282736</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-04 16:48:07 -0700</bug_when>
    <thetext>Created attachment 282736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207723</commentid>
    <comment_count>18</comment_count>
      <attachid>282737</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-04 17:12:04 -0700</bug_when>
    <thetext>Created attachment 282737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207724</commentid>
    <comment_count>19</comment_count>
      <attachid>282738</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-04 17:43:53 -0700</bug_when>
    <thetext>Created attachment 282738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207727</commentid>
    <comment_count>20</comment_count>
      <attachid>280334</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-04 20:17:31 -0700</bug_when>
    <thetext>Comment on attachment 280334
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.cpp:72
&gt;&gt; +    m_frames[0] = ImageFrameData(image);
&gt; 
&gt; Really surprised that this patch removes the optimization of doing a WTFMove on the image passed in. That needs to be restored.
&gt; 
&gt; This should be:
&gt; 
&gt;     m_frames.reserveInitialCapacity(1);
&gt;     m_frames.uncheckedAppend(WTFMove(image));
&gt; 
&gt; Or alternatively could initialize the vector with a size of 1 and then assign the single element to it. There is no reason to call the grow function. But it’s nice to avoid constructing the empty ImageFrameData just to overwrite it a moment later, which is why I like uncheckedAppend better.
&gt; 
&gt; Even better would be adding a constructor to Vector that lets us make one containing a single object with move semantics. Right now we don’t have that constructor, though. A lot that are close, but not quite.

Fixed as suggested.

&gt;&gt; Source/WebCore/platform/graphics/BitmapImage.h:53
&gt;&gt; +};
&gt; 
&gt; Seems like this belongs in the ImageFrameData header, not the BitmapImage header. It’s a mistake to have this somewhere not right next to the class it&apos;s based on.
&gt; 
&gt; No need for the &quot;public&quot; here. I also think we should fix this so that all the members initialize to zero.

This initialization was removed because m_hasAlpha can be initialized with false since it is guarded by m_hasMetadata.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameData.h:27
&gt;&gt; +#define ImageFrameData_h
&gt; 
&gt; New files should use #pragma once, not the old style guards.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameData.h:29
&gt;&gt; +#include &quot;Color.h&quot;
&gt; 
&gt; We don’t need to include &quot;Color.h&quot; just to declare functions that return a Color. It can be forward-declared instead.

The reference to Color.h was removed from this header file.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameData.h:37
&gt;&gt; +typedef short SubsamplingLevel;
&gt; 
&gt; Please use &quot;using&quot; instead of typedef in new code.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameData.h:41
&gt;&gt; +const SubsamplingLevel DefaultSubsamplingLevel = MinSubsamplingLevel;
&gt; 
&gt; Should this be an enum instead of an integer? Also, why did we chose the type &quot;short&quot; for a value in the range [0..3]? Seems like it could equally well be int or uint8_t.

SubsamplingLevel was defined to be uint8_t and the special values were defined in an enum.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameData.h:54
&gt;&gt; +};
&gt; 
&gt; Seems like these should have shorter names, be members of ImageFrameData, and use enum class so the names don’t have to be so repetitive.

These enum were moved inside ImageFrameData and were defined enum classes.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameData.h:61
&gt;&gt; +}
&gt; 
&gt; I know this is not new, but it seems really strange to group these in a namespace and also to have them here instead of in NativeImagePtr.h. We should turn the NativeImagePtr typedef into a PlatformImage class.

The PlatformImage was introduced in https://bugs.webkit.org/show_bug.cgi?id=158684.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameData.h:63
&gt;&gt; +class ImageDecoder;
&gt; 
&gt; Forward declarations should go *before* things that a re actually defined in this file.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameData.h:65
&gt;&gt; +class ImageFrameData {
&gt; 
&gt; Why have &quot;Data&quot; in the name of this class? Why not just ImageFrame?
&gt; 
&gt; Is it really significantly better to have this be a class rather than a struct? I guess maybe, but it does mean there are  a lot of getter functions to write.

The class ImageFrame is defined in platform/image-decoders/ImageDecoder.h. It is not complied for CG but this class is compiled for all platforms. I have a plan to merge both since for non CG platforms, the ImageFrame is cached twice; one with the ImageDecoder and the second in the BitmapImage. When they are merged this class&apos; name can be changed to ImageFrame.

&gt;&gt; Source/WebCore/platform/graphics/ImageFrameData.h:68
&gt;&gt; +    ImageFrameData(const NativeImagePtr&amp;);
&gt; 
&gt; Shouldn’t this take NativeImagePtr&amp;&amp; instead? This takes ownership.

Done.

&gt;&gt; Source/WebCore/platform/graphics/cairo/BitmapImageCairo.cpp:67
&gt;&gt; +}
&gt; 
&gt; Why is it OK to have an empty implementation here? It seems like silently failing to clear would be a problem. Maybe calls to clear should all be inside #if CACHE_SUBIMAGES? I don’t think &quot;clear&quot; expresses the purpose of this function well enough.

The function name was changed to be clearSubImages() and it is now a member of PlatformImage class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207729</commentid>
    <comment_count>21</comment_count>
      <attachid>282741</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-07-04 20:20:45 -0700</bug_when>
    <thetext>Created attachment 282741
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230180</commentid>
    <comment_count>22</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-09-15 14:27:38 -0700</bug_when>
    <thetext>This now is covered by https://bugs.webkit.org/show_bug.cgi?id=159819.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230185</commentid>
    <comment_count>23</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-09-15 14:29:19 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 159819 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340443</commentid>
    <comment_count>24</comment_count>
      <attachid>282741</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-08-19 16:02:28 -0700</bug_when>
    <thetext>Comment on attachment 282741
Patch for review

r-, as this has been pending review for over a year now. It is near-impossible that this patch still applies to trunk and unlikely to still be relevant in its current form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340694</commentid>
    <comment_count>25</comment_count>
      <attachid>282741</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-08-21 12:16:16 -0700</bug_when>
    <thetext>Comment on attachment 282741
Patch for review

This bug was marked as s duplicate. I was not aware that duplicate bugs can also appear as requesting-review bugs. I think removing the flags is more appropriate in this case.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273988</attachid>
            <date>2016-03-14 10:38:04 -0700</date>
            <delta_ts>2016-03-14 10:46:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160314103752.patch</filename>
            <type>text/plain</type>
            <size>123335</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjOThmYzYxZmI4ZmUx
ZTAxYTY5MWNjNzg0OTM0NmU1YTkwNzI1MC4uYTU5MWU1NDAxNTY3OWE2NmVmZWQ4ZTg1ODUwZmNi
MmQzNzE5MGRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzNCBAQAorMjAxNi0wMy0xNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIFJlbmFt
ZSBGcmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgbm90IGZvciByZXZpZXcuIEl0IGlzIG9ubHkgZm9yIEVXUy4gSXQg
Y29udGFpbnMgdGhlIGZpeCBvZgorICAgICAgICB3ZWJraXQgYnVncyAxNTU0MTIsIDE1NTQyMiBh
bmQxNTU0NDQuIEEgc2VwYXJhdGUgcGF0Y2ggd2lsbCBiZSBwb3N0ZWQgZm9yCisgICAgICAgIHJl
dmlldyBvbmNlIHRoaXMgY29tYmluZWQgcGF0Y2ggcGFzc2VzIHRoZSBFV1MuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OmltYWdlU2l6ZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNo
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OnVwZGF0ZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpl
bnN1cmVGcmFtZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUhh
c0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVPcmll
bnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9y
U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjptYXlGaWxsV2l0aFNvbGlkQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNvbGlkQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmR1bXApOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpoYXZlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpmcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OkZyYW1lRGF0YSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6On5GcmFtZURhdGEpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnNvbGlkQ29s
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3RhdHVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09y
aWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aW5pdGlhbGl6ZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjppbml0aWFsaXplZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxp
bmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVEYXRhOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGV0ZXJtaW5lTWluaW11bVN1
YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJl
Zk9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJh
Y3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0Nh
bnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6aW1hZ2VTb3VyY2VPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Om9yaWVudGF0
aW9uRnJvbVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0
ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlclJlbGVhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjpmcmFtZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
cmVwZXRpdGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Z2V0SG90
U3BvdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6b3JpZW50YXRpb25BdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6On5JbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjplbnN1cmVEZWNv
ZGVySXNDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJh
bWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25B
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlclJlbGVhc2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjppbWFnZVNvdXJjZU9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Okljb246Okljb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
ZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
ZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCisyMDE2LTAzLTEzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgQ3JlYXRl
IGEgQ0cgSW1hZ2VEZWNvZGVyIGNsYXNzIGluc3RlYWQgb2YgZGVmaW5pbmcgaXQgYXMgQ0dJbWFn
ZVNvdXJjZVJlZiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1vdmUgdGhlIGltYWdlIGRlY29kaW5nIGNvZGUgZnJvbSBJbWFnZVNvdXJjZUNHLmNwcCBv
dXQgdG8gYSBuZXcgY2xhc3MgbmFtZWQKKyAgICAgICAgSW1hZ2VEZWNvZGVyLiBUaGUgcHVycG9z
ZSBvZiB0aGlzIHNwbGl0IGlzIHRvIGhhdmUgdGhlIENHIEltYWdlU291cmNlIHNpbWlsYXIKKyAg
ICAgICAgdG8gdGhlIG5vbmUgQ0cgSW1hZ2VTb3VyY2Ugd2hlcmUgdGhlcmUgaXMgYSBzZXBhcmF0
ZSBjbGFzcyBmb3IgZGVjb2RpbmcuIFRoZQorICAgICAgICBwbGFuIGlzIHRvIG1lcmdlIHRoZSBJ
bWFnZVNvdXJjZS5jcHAgYW5kIEltYWdlU291cmNlQ0cuY3BwIGluIG9uZSBmaWxlIHNvCisgICAg
ICAgIGRlY2lkaW5nIHdoZXRoZXIgdGhlIGRlY29kaW5nIHNob3VsZCBoYXBwZW4gc3luY2hyb25v
dXNseSBvciBhc3luY2hyb25vdXNseQorICAgICAgICBjYW4gaGFwcGVuIGluIG9uZSBwbGFjZSBh
bmQgdGhlIGNhY2hpbmcgb2YgdGhlIGZyYW1lcyBjYW4gYmUgaGFuZGxlZCBieSB0aGUKKyAgICAg
ICAgSW1hZ2VTb3VyY2UgYXMgd2VsbC4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21h
a2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6aW1hZ2VTaXplRm9yUmVuZGVy
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRhdGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
Ojppbml0aWFsaXplZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1h
Z2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OmltYWdlU291cmNlT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRC
dWZmZXJHZXRCeXRlc0F0UG9zaXRpb24pOworICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVy
UmVsZWFzZSk7CisgICAgICAgIChXZWJDb3JlOjpvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmdldEhv
dFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjp+SW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5zdXJlRGVj
b2RlcklzQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZy
YW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJSZWxlYXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpJbWFnZVNvdXJjZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6aW1hZ2VTb3VyY2VPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjppbml0aWFsaXplZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jp
dG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRldGVy
bWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKToKKworMjAxNi0wMy0xMyAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5nZSBOYXRpdmVJ
bWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZpbmcgTmF0aXZlSW1hZ2VQdHIg
YXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBvZgorICAgICAg
ICB0aGUgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrcyB3YXMgZG9uZSB0byBtYWtlIHN1
cmUgdGhlIENHIHBvaW50ZXIKKyAgICAgICAgaXMgbWFpbnRhaW5lZCBjb3JyZWN0bHkuIEl0IHdh
cyBhbHNvIG5vdCBwb3NzaWJsZSB0byBtb3ZlIGEgRnJhbWVEYXRhIHNpbmNlCisgICAgICAgIGNh
bGxpbmcgdGhlIGRlc3RydWN0b3Igd2FzIHJlbGVhc2luZyB0aGUgQ0dJbWFnZVJlZi4KKworICAg
ICAgICBJIGFtIGdvaW5nIHRvIGZvbGxvdyB0aGlzIG5hbWluZyBjb252ZW50aW9uOgorICAgICAg
ICAxLiBBbiBJbWFnZSBvYmplY3QgY2FuIGhhdmUgb25lIG9yIG1vcmUgRnJhbWVEYXRhLiBBIEZy
YW1lRGF0YSBjYW4gYmUgbmFtZWQKKyAgICAgICAgICAgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUi
LCAibV9mcmFtZXMiLCBldGMuCisgICAgICAgIDIuIEEgRnJhbWVEYXRhIGNhbiBoYXZlIHplcm8g
b3Igb25lIE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbgorICAgICAgICAgICBi
ZSBuYW1lZCBhcyAiaW1hZ2UiLCAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIGxvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6YWRk
SW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
RGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
Y29uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tG
b3JTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdl
UmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4
dHJhY3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRU
b0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Okljb246Okljb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpn
ZXRUSUZGUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUpOgorCiAyMDE2LTAzLTEyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0Zvcm1zOiBmb2N1c10gZm9jdXMgcmluZ3MgYXJvdW5kIHRl
eHQgZmllbGRzIGRvIG5vdCBmb2xsb3cgY29udG91ciAoYm9yZGVyLXJhZGl1cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IGU1MjA5Y2IyMGNmMDMzODdhMjUyNjQzZGY0
ZTBiMjE1MTQ5MjA0ZjcuLjdiMzY3YTczYWM5ZTE1YmQ5NWM4OWM5N2EzNmEwZjAyNWY3MjgwNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtNzEsNiArNzEsNyBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlU291cmNlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dp
bi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQppbmRleCA4MzViOWFhMjI0YWE5ZWFhZWUwNDYyMzM5N2U5OTAxNmU5Zjdl
ZWJmLi5kYWNkYTU2OTFhNjVjNjY1NjA2M2E0YzA3MDZjMTBhMGVmYjYyMTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDAwLDYgKzQwMCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMzA3YmEzOGZmMGYzYTRjNDcxYjlkNDI5
MTQ2MTYyYTk1OWVlNzY2Li5kMTNlOWI4MzkwYTFiZDBiMjE3YzQyMzg4NDNjZTRiZDRjZDBiZTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yMjkxLDYgKzIyOTEsMTAgQEAKIAkJNTNFRjc2NkMxNjUzMTk5NDAwNENCRTQ5IC8q
IFNldHRpbmdzTWFjcm9zLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGlu
Z3NNYWNyb3MuaCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1
NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1NTlCQjg3OTFDOTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUJCODc3
MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuY3BwICovOyB9OworCQk1NTlCQjg3QTFD
OTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTlCQjg3ODFDOTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VE
ZWNvZGVyLmggKi87IH07CisJCTU1OUJCODdEMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1l
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NTlCQjg3QjFDOTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuY3BwICovOyB9OworCQk1
NTlCQjg3RTFDOTZCMkM5MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUJCODdDMUM5NkIyQzgwMDI0MTND
RCAvKiBJbWFnZUZyYW1lRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTU3MkE3RjIxMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGlj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyQTdG
MjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggKi87IH07CiAJCTU3MkE3RjIz
MUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyog
U2ltdWxhdGVkQ2xpY2suY3BwICovOyB9OwogCQk1ODAzNzE2MTFBNjZGMDBBMDBCQUY1MTkgLyog
Q2xpcFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTgwMzcxNUYxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmNwcCAqLzsgfTsKQEAgLTk4
NzUsNiArOTg3OSwxMCBAQAogCQk1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NN
YWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk1NTlCQjg3NzFDOTY0NjU4
MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEltYWdlRGVjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU1OUJCODc4MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU1OUJCODdCMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1OUJCODdDMUM5NkIyQzgwMDI0MTNDRCAv
KiBJbWFnZUZyYW1lRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFn
ZUZyYW1lRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUQ0MDhGNzFBN0M2
MzE4MDBDNzg0NTAgLyogU1ZHSW1hZ2VDbGllbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR0ltYWdlQ2xpZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltdWxhdGVkQ2xpY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTcyQTdGMjIxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXVsYXRlZENsaWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxODMzLDYgKzIxODQxLDggQEAK
IAkJCQkyMjkyQjI3QjEzNTY2Njk0MDBDRjExRUYgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwICov
LAogCQkJCTIyQkQ5RjgwMTM1MzY0RkUwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGFDRy5oICov
LAogCQkJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLywKKwkJCQk1
NTlCQjg3NzFDOTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmNwcCAqLywKKwkJCQk1NTlC
Qjg3ODFDOTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmggKi8sCiAJCQkJQjI3NTM1MzEw
QjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlQ0cuY3BwICovLAogCQkJCTRCMzQ4MDkyMEVF
RjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHLmggKi8sCiAJCQkJNEIzNDgwOTEwRUVGNTBE
NDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0dNYWMubW0gKi8sCkBAIC0yMTk5NSw2ICsyMjAwNSw4
IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAqLywK
IAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQky
MkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJCQkJNTU5
QkI4N0IxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmNwcCAqLywKKwkJCQk1NTlC
Qjg3QzFDOTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuaCAqLywKIAkJCQlCQzdGNDRB
NzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovLAogCQkJCUE4NzQ4RDc0MTJD
QzNGODkwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCAqLywKIAkJCQlBODc0OEQ2NjEy
Q0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovLApAQCAtMjU0NzUsNiArMjU0
ODcsNyBAQAogCQkJCTk3QkM2QTI0MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzM3MUEyMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRh
YmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI1MTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTlCQjg3RTFD
OTZCMkM5MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
QkM2QTI4MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZFMDlEQjQ5MTY5RTJENkUwMDYyMjU1NyAvKiBEYXRhYmFzZUVycm9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2ODEyLDYgKzI2ODI1LDcgQEAKIAkJCQlGREExNUVDRTEy
QjAzRjYxMDAzQTU4M0EgLyogSlNTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5RkEzN0VGQjExNzJGREE2MDBDNENENTUgLyogSlNTY3JpcHRQcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5RkEzN0VGRDExNzJGREE2MDBDNENENTUgLyogSlNTY3JpcHRQcm9maWxl
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTU5QkI4N0ExQzk2NDY1ODAwMjQxM0NEIC8qIElt
YWdlRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEMDZBRDExQzc3NzU0ODAwRkRGQUYx
IC8qIEpTU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUJEQTY0RDgxQjk3NUNGMjAwOUM0Mzg3IC8qIEpTU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0Q5REUxN0IxN0FBQzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI5MjAzLDYgKzI5MjE3LDcgQEAKIAkJCQlCMjc1MzU2NjBCMDUzODE0MDAy
Q0U2NEYgLyogQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDRjMzMjQwRjJCOTcxNTAw
NEI2Nzk1IC8qIENvbG9yQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCQTc2QzkxMUQyMEU0
NzAwNEMyMDFDIC8qIENvbG9yRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NTlCQjg3OTFD
OTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
Mjk5MzVEMTdBMURENTgwMEJDRTg4MCAvKiBDb2xvcklucHV0VHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMjc1MzU3NzBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3JNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0M0VERDY3RTFCNDg1REJGMDA2NDBFNzUgLyogQ29tYmluZWRGaWx0ZXJzQWxw
aGFiZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTU5OCw2ICsyOTYxMyw3IEBACiAJCQkJODUz
QkY0REMwQUJCNkI1NTAwODY0N0JCIC8qIERPTU5vZGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
NTUyNkMzODBBQjBBMTdFMDAwMzAyRUEgLyogRE9NTm9kZUl0ZXJhdG9yLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODVBQ0FBOEUwQTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNTU5QkI4N0QxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NkM4QUU1MEE5MTI2NDkwMDVDNjg3QiAvKiBET01P
YmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUM3RjVEMTBBQUZCOEQ5MDA0MDE0REQgLyog
RE9NT3ZlcmZsb3dFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxMjg0QkQ1MTA0NEEwMUUw
MEVBRUI1MiAvKiBET01QYWdlVHJhbnNpdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBmMzc4NzUyMWRk
ZmZmNjgyYmQ4OGU2NDcyY2FmMDYyNWUzZjA0NTQ0Li45YTE0NzU3ODgzN2ZjZGUxMzEwZDFhZDEw
NjIyYjdiYjcwNjg0YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBMYXlvdXRTaXplIENhY2hlZEltYWdlOjppbWFn
ZVNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBmbG9hdAogICAg
IGlmIChyZW5kZXJlciAmJiBpczxCaXRtYXBJbWFnZT4oKm1faW1hZ2UpKSB7CiAgICAgICAgIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHJlbmRlcmVy
LT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpLCByZW5kZXJlci0+c3R5bGUoKS5pbWFn
ZU9yaWVudGF0aW9uKCkpOwogICAgICAgICBpZiAob3JpZW50YXRpb25EZXNjcmlwdGlvbi5yZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAg
ICAgICAgaW1hZ2VTaXplID0gTGF5b3V0U2l6ZShkb3duY2FzdDxCaXRtYXBJbWFnZT4oKm1faW1h
Z2UpLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikpOwor
ICAgICAgICAgICAgaW1hZ2VTaXplID0gTGF5b3V0U2l6ZShkb3duY2FzdDxCaXRtYXBJbWFnZT4o
Km1faW1hZ2UpLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSk7CiAgICAgfQogI2Vsc2UKICAg
ICBpZiAoaXM8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKSAmJiAocmVuZGVyZXIgJiYgcmVuZGVyZXIt
PnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRp
b24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXgg
OTk5NDY1ZWEzOTA2OTdjYmUwMGZlNmZhODgzOGMxMzhlNTQ0N2ExNy4uODQ2YzBkYzkzODRlNzVk
YmEwODIwYzI4MGZiNjQxY2U4YTA4ZjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yMjUsOCArMjI1LDYgQEAgYm9vbCBNZW1vcnlDYWNoZTo6
YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3QKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBDYWNo
ZWRJbWFnZTo6TWFudWFsbHlDYWNoZWQsIHNlc3Npb25JRCk7CiAKLSAgICAvLyBBY3R1YWwgcmVs
ZWFzZSBvZiB0aGUgQ0dJbWFnZVJlZiBpcyBkb25lIGluIEJpdG1hcEltYWdlLgotICAgIENGUmV0
YWluKGltYWdlKTsKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCZkdW1teUNhY2hlZEltYWdl
Q2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+
ZGVjb2RlZFNpemUoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBmYWYw
Zjg2OTYyYzNmYjY1Nzc3NDViZmFmNzViNGM4NGQ4MGNjMDYwLi42ZTQzYzc3MTRiMGEwNWVjY2Nj
NjBjMTNiMjU3ODFiOGVjOWNiM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC00Nyw5ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVy
KQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVs
KDApCi0gICAgLCBtX2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkKLSAgICAsIG1fc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRGcmFtZSgw
KQogICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3JlcGV0
aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQpAQCAtNjYsMTMgKzYzLDEwIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICNlbHNlCiAgICAgLCBtX2Fs
bG93U3Vic2FtcGxpbmcoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNl
KQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkKICAgICAsIG1fYW5pbWF0aW9u
RmluaXNoZWQoZmFsc2UpCiAgICAgLCBtX2FsbERhdGFSZWNlaXZlZChmYWxzZSkKICAgICAsIG1f
aGF2ZVNpemUoZmFsc2UpCiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgLCBtX2hh
c1VuaWZvcm1GcmFtZVNpemUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFsc2UpCiAg
ICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAoZmFsc2UpCiB7CkBAIC05Niw3
ICs5MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIoZG91YmxlIGRlbGF5KQogICAg
IG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0KIAotYm9vbCBCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitib29sIEJpdG1hcEltYWdlOjpoYXZl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChpbmRleCA+PSBmcmFt
ZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNCw3ICs5OCw3IEBAIGJvb2wg
Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRl
eCA+PSBtX2ZyYW1lcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1f
aW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QKQEAgLTEyNSw3ICsxMTksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2Rl
ZERhdGEoYm9vbCBkZXN0cm95QWxsKQogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRo
ZSBmcmFtZWJ1ZmZlciBkYXRhKSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAv
LyB0aGUgbWV0YWRhdGEuCiAgICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tp
XS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCisg
ICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRh
ZGF0YSkpCiAgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOwogICAg
IH0KIApAQCAtMTU4LDggKzE1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVk
RGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGVz
dHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVkIGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVk
U291cmNlIGNsZWFyZWRTb3VyY2UpCiB7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAg
ICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0gZmFsc2U7CisgICAgbV9zb2xpZENvbG9yVmFsdWUg
PSBUcmlTdGF0ZTo6VW5jaGVja2VkOwogICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKIAog
ICAgIEFTU0VSVChtX2RlY29kZWRTaXplID49IGZyYW1lQnl0ZXNDbGVhcmVkKTsKQEAgLTE4Mywx
MSArMTc2LDkgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMuc2l6
ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAg
ICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBt
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1l
Q2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7CisgICAgICAgIG1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWwpOwogICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVs
ID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1fZnJh
bWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAg
ICAgfQogCiAgICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3NvdXJjZS5vcmll
bnRhdGlvbkF0SW5kZXgoaW5kZXgpOwpAQCAtMjAwLDExICsxOTEsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsLCBJbQogICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJh
bWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0
ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7
CiAKLSAgICBjb25zdCBJbnRTaXplIGZyYW1lU2l6ZShpbmRleCA/IG1fc291cmNlLmZyYW1lU2l6
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbV9zaXplKTsKLSAgICBpZiAoIXN1
YnNhbXBsaW5nTGV2ZWwgJiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKLSAgICAgICAgbV9oYXNVbmlm
b3JtRnJhbWVTaXplID0gZmFsc2U7Ci0KLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUp
IHsKKyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKICAgICAgICAgaW50IGRlbHRh
Qnl0ZXMgPSBzYWZlQ2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOwogICAg
ICAgICBtX2RlY29kZWRTaXplICs9IGRlbHRhQnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxseS1k
ZWNvZGVkIGZyYW1lIHdpbGwgc3Vic3VtZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1c2Vk
CkBAIC0yMzYsMTYgKzIyMywxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWREZWNvZGVQcm9wZXJ0
aWVzKCkgY29uc3QKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQo
dGhpcywgZGVsdGFCeXRlcyk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZVNpemUoSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAordm9pZCBCaXRtYXBJ
bWFnZTo6dXBkYXRlU2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NpemVBdmFpbGFibGUgfHwg
bV9oYXZlU2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zaXplID0gbV9zb3VyY2Uuc2l6
ZShkZXNjcmlwdGlvbik7Ci0gICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zb3Vy
Y2Uuc2l6ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50YXRp
b24sIGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSkpOwotCi0gICAgbV9pbWFnZU9yaWVu
dGF0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRp
b24oKSk7Ci0gICAgbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICBt
X3NpemUgPSBtX3NvdXJjZS5zaXplKCk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9u
ID0gbV9zb3VyY2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwogCiAgICAgbV9oYXZlU2l6
ZSA9IHRydWU7CiAKQEAgLTI1OSw5ICsyNDMsOSBAQCBGbG9hdFNpemUgQml0bWFwSW1hZ2U6OnNp
emUoKSBjb25zdAogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLUludFNpemUgQml0bWFwSW1hZ2U6
OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uKSBjb25zdAorSW50U2l6ZSBCaXRtYXBJbWFnZTo6c2l6ZVJlc3BlY3RpbmdPcmll
bnRhdGlvbigpIGNvbnN0CiB7Ci0gICAgdXBkYXRlU2l6ZShkZXNjcmlwdGlvbik7CisgICAgdXBk
YXRlU2l6ZSgpOwogICAgIHJldHVybiBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CiB9CiAK
QEAgLTMwMSw3ICsyODUsNyBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZy
YW1lcyEKICAgICAgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVC
eXRlczsKICAgICAgICAgaWYgKG1fZnJhbWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1l
c1tpXS5tX2lzQ29tcGxldGUpCi0gICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9m
cmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBmcmFtZUJ5dGVzIDogMCk7CisgICAgICAgICAgICBmcmFt
ZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmc6OkNh
Y2hlTm9uZSkgPyBmcmFtZUJ5dGVzIDogMCk7CiAgICAgfQogICAgIGRlc3Ryb3lNZXRhZGF0YUFu
ZE5vdGlmeShmcmFtZUJ5dGVzQ2xlYXJlZCwgQ2xlYXJlZFNvdXJjZTo6Tm8pOwogI2Vsc2UKQEAg
LTM0MCw3ICszMjQsNiBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERh
dGFSZWNlaXZlZCkKICNlbmRpZgogCiAgICAgbV9oYXZlRnJhbWVDb3VudCA9IGZhbHNlOwotICAg
IG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA9IHRydWU7CiAgICAgcmV0dXJuIGlzU2l6ZUF2YWlsYWJs
ZSgpOwogfQogCkBAIC0zNzksMjYgKzM2MiwyNiBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVG
cmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgp
Ci0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFt
X2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNo
ZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKKyAgICAg
ICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFu
ZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKKyAgICAgICAgfHwgKGZyYW1lQ2Fj
aGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSAmJiAhbV9mcmFtZXNbaW5k
ZXhdLm1faGF2ZU1ldGFkYXRhKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVD
YWNoaW5nKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0
bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNj
YWxlSGludCkKK1Bhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCiB7CiAgICAgaWYg
KGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSBzdGQ6Om1pbihtX3NvdXJjZS5zdWJz
YW1wbGluZ0xldmVsRm9yU2NhbGUocHJlc2VudGF0aW9uU2NhbGVIaW50KSwgbV9taW5pbXVtU3Vi
c2FtcGxpbmdMZXZlbCk7CisgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0g
bV9zb3VyY2Uuc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKHByZXNlbnRhdGlvblNjYWxlSGludCwg
bV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCk7CiAKICAgICAvLyBXZSBtYXkgaGF2ZSBjYWNoZWQg
YSBmcmFtZSB3aXRoIGEgaGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGljaCBjYXNlIHdl
IG5lZWQgdG8KICAgICAvLyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgotICAgIGlmIChp
bmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSAmJiBzdWJz
YW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgeworICAg
IGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSAm
JiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkg
ewogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQsIGJ1dCBhdCB0b28g
c21hbGwgYSBzaXplLCByZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KICAgICAgICAgaW50IHNp
emVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKLSAgICAgICAgbV9mcmFt
ZXNbaW5kZXhdLmNsZWFyKHRydWUpOworICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xlYXIoSW1h
Z2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSk7CiAgICAgICAgIGludmFsaWRhdGVQbGF0Zm9ybURh
dGEoKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBzaXplQ2hhbmdlOwogICAgICAgICBpZiAo
aW1hZ2VPYnNlcnZlcigpKQpAQCAtNDA2LDE1ICszODksMTUgQEAgUGFzc05hdGl2ZUltYWdlUHRy
IEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRp
b25TY2EKICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBmcmFtZSB5ZXQs
IGRvIHNvLgotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2lu
ZGV4XS5tX2ZyYW1lKQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
LCBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXpl
KCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQorICAgICAgICBjYWNoZUZyYW1lKGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFuZEZy
YW1lKTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0Nh
Y2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0Nh
Y2hlZChpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGEpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsK
QEAgLTQyMiw3ICs0MDUsNyBAQCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdElu
ZGV4KHNpemVfdCBpbmRleCkKIAogZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgs
IENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgs
IEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CkBAIC00MzAsMTIgKzQxMywx
MiBAQCBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KQogCiBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAg
ICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOwogfQogCiBib29sIEJp
dG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYg
KCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAgaWYg
KCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRh
ZGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5t
X2hhdmVNZXRhZGF0YSkKQEAgLTQ1MSw3ICs0MzQsNyBAQCBib29sIEJpdG1hcEltYWdlOjpjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogCiBJbWFnZU9yaWVudGF0aW9uIEJpdG1hcEltYWdl
OjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1
cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFlbnN1
cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSkp
CiAgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKIAogICAgIGlmIChtX2Zy
YW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpCkBAIC02NzgsMTkgKzY2MSw0OSBAQCBib29sIEJp
dG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oQW5pbWF0aW9uQWR2YW5jZW1lbnQg
YWR2YW5jZW1lbnQpCiAKICAgICByZXR1cm4gYWR2YW5jZWRBbmltYXRpb247CiB9CisgICAgCit2
b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQoreworICAgIG1fc29saWRDb2xv
clZhbHVlID0gVHJpU3RhdGU6Ok5vOworICAgIAorICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFoYXZlRnJhbWVJbWFnZUF0SW5kZXgoMCkp
IHsKKyAgICAgICAgSW50U2l6ZSBzaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleCgwLCAw
KTsKKyAgICAgICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGlmICghZW5zdXJlRnJhbWVJ
c0NhY2hlZCgwKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCFt
X2ZyYW1lcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoT3B0aW9uYWw8
Q29sb3I+IGNvbG9yID0gbV9mcmFtZXNbMF0uc29saWRDb2xvcigpKSB7CisgICAgICAgIG1fc29s
aWRDb2xvciA9IGNvbG9yLnZhbHVlKCk7CisgICAgICAgIG1fc29saWRDb2xvclZhbHVlID0gVHJp
U3RhdGU6OlllczsKKyAgICB9Cit9CiAKLWJvb2wgQml0bWFwSW1hZ2U6Om1heUZpbGxXaXRoU29s
aWRDb2xvcigpCitib29sIEJpdG1hcEltYWdlOjppc1NvbGlkQ29sb3IoKQogewotICAgIGlmICgh
bV9jaGVja2VkRm9yU29saWRDb2xvciAmJiBmcmFtZUNvdW50KCkgPiAwKSB7CisgICAgaWYgKG1f
c29saWRDb2xvclZhbHVlID09IFRyaVN0YXRlOjpVbmNoZWNrZWQgJiYgZnJhbWVDb3VudCgpID4g
MCkgewogICAgICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKLSAgICAgICAgQVNTRVJUKG1fY2hl
Y2tlZEZvclNvbGlkQ29sb3IpOworICAgICAgICBBU1NFUlQobV9zb2xpZENvbG9yVmFsdWUgIT0g
VHJpU3RhdGU6OlVuY2hlY2tlZCk7CiAgICAgfQotICAgIHJldHVybiBtX2lzU29saWRDb2xvciAm
JiAhbV9jdXJyZW50RnJhbWU7CisgICAgcmV0dXJuIG1fc29saWRDb2xvclZhbHVlID09IFRyaVN0
YXRlOjpZZXM7CiB9Ci0KLUNvbG9yIEJpdG1hcEltYWdlOjpzb2xpZENvbG9yKCkgY29uc3QKKyAg
ICAKK2Jvb2wgQml0bWFwSW1hZ2U6Om1heUZpbGxXaXRoU29saWRDb2xvcigpCit7CisgICAgcmV0
dXJuIGlzU29saWRDb2xvcigpICYmICFtX2N1cnJlbnRGcmFtZTsKK30KKyAgICAKK0NvbG9yIEJp
dG1hcEltYWdlOjpzb2xpZENvbG9yKCkKIHsKLSAgICByZXR1cm4gbV9zb2xpZENvbG9yOworICAg
IHJldHVybiBpc1NvbGlkQ29sb3IoKSA/IG1fc29saWRDb2xvciA6IENvbG9yKCk7CiB9CiAgICAg
CiBib29sIEJpdG1hcEltYWdlOjpjYW5BbmltYXRlKCkKQEAgLTcxMiwxMSArNzI1LDggQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICAKICAgICBpZiAo
YWxsb3dTdWJzYW1wbGluZygpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImFsbG93LXN1YnNh
bXBsaW5nIiwgYWxsb3dTdWJzYW1wbGluZygpKTsKLSAgICBpZiAobV9pc1NvbGlkQ29sb3IpCi0g
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic29saWQtY29sb3IiLCBtX2lzU29saWRDb2xvcik7Ci0g
ICAgCi0gICAgaWYgKG1faW1hZ2VPcmllbnRhdGlvbiAhPSBPcmlnaW5Ub3BMZWZ0KQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoIm9yaWVudGF0aW9uIiwgbV9pbWFnZU9yaWVudGF0aW9uKTsKKyAg
ICBpZiAobV9zb2xpZENvbG9yVmFsdWUgPT0gVHJpU3RhdGU6OlllcykKKyAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJzb2xpZC1jb2xvciIsIG1fc29saWRDb2xvcik7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDc0OTNjNmE0
YmZiODYzZDk3NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQuLmQ5OTdlZGQ1MmUyNjNiNTVmYzJkMDgx
OWE2YzczMjE2ODIzYjkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSW1hZ2UuaCIK
ICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVk
ZSAiSW50U2l6ZS5oIgpAQCAtNDcsNjEgKzQ4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9f
ICpIQklUTUFQOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBzdHJ1Y3QgRnJh
bWVEYXRhOwotfQotCi1uYW1lc3BhY2UgV1RGIHsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0
b3JUcmFpdHM8V2ViQ29yZTo6RnJhbWVEYXRhPiA6IHB1YmxpYyBTaW1wbGVDbGFzc1ZlY3RvclRy
YWl0cyB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0
ID0gZmFsc2U7IC8vIE5vdCBhbGwgRnJhbWVEYXRhIG1lbWJlcnMgaW5pdGlhbGl6ZSB0byAwLgot
ICAgIH07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGltZXI7CiAKLS8vID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gRnJhbWVE
YXRhIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLQotc3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJh
bWVEYXRhKTsKLXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1fZnJhbWUoMCkK
LSAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQotICAgICAg
ICAsIG1fc3Vic2FtcGxpbmdMZXZlbCgwKQotICAgICAgICAsIG1fZHVyYXRpb24oMCkKLSAgICAg
ICAgLCBtX2hhdmVNZXRhZGF0YShmYWxzZSkKLSAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2Up
Ci0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKSAKLSAgICAgICAgLCBtX2ZyYW1lQnl0ZXMoMCkK
LSAgICB7Ci0gICAgfQotCi0gICAgfkZyYW1lRGF0YSgpCi0gICAgeyAKLSAgICAgICAgY2xlYXIo
dHJ1ZSk7Ci0gICAgfQotCi0gICAgLy8gQ2xlYXIgdGhlIGNhY2hlZCBpbWFnZSBkYXRhIG9uIHRo
ZSBmcmFtZSwgYW5kIChvcHRpb25hbGx5KSB0aGUgbWV0YWRhdGEuCi0gICAgLy8gUmV0dXJucyB3
aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4KLSAgICBib29sIGNs
ZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7Ci0KLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ZyYW1lOwot
ICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKLSAgICBTdWJzYW1wbGluZ0xldmVs
IG1fc3Vic2FtcGxpbmdMZXZlbDsKLSAgICBmbG9hdCBtX2R1cmF0aW9uOwotICAgIGJvb2wgbV9o
YXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsKLSAgICBib29sIG1f
aGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlczsKLX07Ci0KLS8vID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEJpdG1hcElt
YWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKICAgICBm
cmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdl
bmVyYXRlZEltYWdlOwpAQCAtMTI1LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgLy8gRmxvYXRT
aXplIGR1ZSB0byBvdmVycmlkZS4KICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkgY29uc3Q7CisgICAg
SW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7CiAKICAgICBib29sIGdl
dEhvdFNwb3QoSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTg5LDcgKzEzOCw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc0JpdG1hcEltYWdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdm9pZCB1cGRhdGVTaXplKEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKSBjb25zdDsKKyAg
ICB2b2lkIHVwZGF0ZVNpemUoKSBjb25zdDsKICAgICB2b2lkIGRldGVybWluZU1pbmltdW1TdWJz
YW1wbGluZ0xldmVsKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTIxNCwxMCArMTYzLDEwIEBA
IHByb3RlY3RlZDoKIAogICAgIHNpemVfdCBmcmFtZUNvdW50KCk7CiAKLSAgICBQYXNzTmF0aXZl
SW1hZ2VQdHIgZnJhbWVBdEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50
ID0gMSk7Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChz
aXplX3QpOworICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOworICAgIFBhc3NOYXRpdmVJbWFnZVB0
ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCi0gICAgYm9vbCBoYXZl
RnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90KTsKIAogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZs
b2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CkBAIC0yMjUsMTEgKzE3NCwxMCBAQCBw
cm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChz
aXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFjY2Vz
c2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeyBDYWNo
ZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9pZCBjYWNoZUZy
YW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBD
YWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gSW1hZ2VGcmFtZUNhY2hpbmc6
OkNhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CiAKICAgICAvLyBDYWxsZWQgYmVmb3JlIGFjY2Vzc2lu
ZyBtX2ZyYW1lc1tpbmRleF0gZm9yIGluZm8gd2l0aG91dCBkZWNvZGluZy4gUmV0dXJucyBmYWxz
ZSBvbiBpbmRleCBvdXQgb2YgYm91bmRzLgotICAgIGJvb2wgZW5zdXJlRnJhbWVJc0NhY2hlZChz
aXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsK
KyAgICBib29sIGVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2Fj
aGluZyA9IEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOwogCiAgICAg
Ly8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlz
IHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUg
YW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0yODAsOCArMjI4LDkgQEAg
cHJvdGVjdGVkOgogICAgIC8vIGNoYW5nZWQuCiAgICAgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3Io
KTsKIAorICAgIGJvb2wgaXNTb2xpZENvbG9yKCk7CiAgICAgYm9vbCBtYXlGaWxsV2l0aFNvbGlk
Q29sb3IoKSBvdmVycmlkZTsKLSAgICBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgQ29sb3Igc29saWRDb2xvcigpIG92ZXJyaWRlOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAogICAgIGJvb2wgbm90U29saWRDb2xvcigpIG92ZXJyaWRlOwpAQCAtMjk3LDEzICsyNDYsMTAg
QEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplOyAvLyBUaGUgc2l6ZSB0byB1
c2UgZm9yIHRoZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1c3QgYmUgdGhlIHNpemUgb2YgdGhlIGZp
cnN0IGltYWdlKS4KICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uOwogCi0gICAgbXV0YWJsZSBTdWJzYW1wbGluZ0xldmVsIG1fbWluaW11bVN1YnNhbXBsaW5n
TGV2ZWw7Ci0KLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1faW1hZ2VPcmllbnRhdGlvbiA6IDQ7IC8v
IEltYWdlT3JpZW50YXRpb25FbnVtCi0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX3Nob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uIDogMTsgLy8gUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtCisg
ICAgbXV0YWJsZSBTdWJzYW1wbGluZ0xldmVsIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgeyAw
IH07CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWU7IC8vIFRoZSBpbmRleCBvZiB0aGUgY3Vy
cmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9yPEZyYW1lRGF0YSwgMT4gbV9mcmFt
ZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdl
IGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCisgICAgVmVjdG9y
PEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4gYXJyYXkgb2YgdGhlIGNhY2hlZCBm
cmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byByZWYgZnJhbWVzIHRvIHBpbiB0aGVt
IGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9mcmFtZVRpbWVy
OwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9u
IGxvb3BzIHdlIHNob3VsZCBkby4gVGhpcyB3aWxsIGJlIGNBbmltYXRpb25Ob25lIGlmIHRoaXMg
aW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0aW9uLgpAQCAtMzMwLDE2ICsyNzYsMTUg
QEAgcHJpdmF0ZToKICAgICB1aW50MTZfdCBtX3Byb2dyZXNzaXZlTG9hZENodW5rQ291bnQ7CiAj
ZW5kaWYKIAorICAgIGVudW0gY2xhc3MgVHJpU3RhdGUgeyBVbmNoZWNrZWQsIE5vLCBZZXMgfTsK
KyAgICBUcmlTdGF0ZSBtX3NvbGlkQ29sb3JWYWx1ZSB7IFRyaVN0YXRlOjpVbmNoZWNrZWQgfTsK
KyAgICAKICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyA6IDE7IC8vIFdoZXRoZXIgd2Ugc2hv
dWxkIGF0dGVtcHQgc3Vic2FtcGxpbmcgaWYgdGhpcyBpbWFnZSBpcyB2ZXJ5IGxhcmdlLgotICAg
IGJvb2wgbV9pc1NvbGlkQ29sb3IgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgYSAxeDEg
c29saWQgaW1hZ2UuCi0gICAgYm9vbCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yIDogMTsgLy8gV2hl
dGhlciB3ZSd2ZSBjaGVja2VkIHRoZSBmcmFtZSBmb3Igc29saWQgY29sb3IuCi0KICAgICBib29s
IG1fYW5pbWF0aW9uRmluaXNoZWQgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSd2ZSBjb21wbGV0
ZWQgdGhlIGVudGlyZSBhbmltYXRpb24uCiAKICAgICBib29sIG1fYWxsRGF0YVJlY2VpdmVkIDog
MTsgLy8gV2hldGhlciBvciBub3Qgd2UndmUgcmVjZWl2ZWQgYWxsIG91ciBkYXRhLgogICAgIG11
dGFibGUgYm9vbCBtX2hhdmVTaXplIDogMTsgLy8gV2hldGhlciBvciBub3Qgb3VyIHxtX3NpemV8
IG1lbWJlciB2YXJpYWJsZSBoYXMgdGhlIGZpbmFsIG92ZXJhbGwgaW1hZ2Ugc2l6ZSB5ZXQuCiAg
ICAgYm9vbCBtX3NpemVBdmFpbGFibGUgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBjYW4gb2J0
YWluIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSBmcmFtZSB5ZXQgZnJvbSBJbWFnZUlPLgot
ICAgIG11dGFibGUgYm9vbCBtX2hhc1VuaWZvcm1GcmFtZVNpemUgOiAxOwogICAgIG11dGFibGUg
Ym9vbCBtX2hhdmVGcmFtZUNvdW50IDogMTsKICAgICBib29sIG1fYW5pbWF0aW9uRmluaXNoZWRX
aGVuQ2F0Y2hpbmdVcCA6IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24u
aAppbmRleCBkOTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIzYTRiOWFlZjNmM2MxN2I3Li4yOGMxMzdk
MjliMTE4YTljZjFiNjE2MWVkZTRkZTQ5MWQwNDg4MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSWNvbi5oCkBAIC02OCw4ICs2OCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgSWNvbihDR0ltYWdlUmVmKTsKLSAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gbV9jZ0ltYWdlOworICAgIEljb24oTmF0aXZlSW1hZ2VQdHIpOworICAgIE5h
dGl2ZUltYWdlUHRyIG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBJY29uKE5T
SW1hZ2UqKTsKICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbV9uc0ltYWdlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNDFmZWYyYTJiMDMxNzBlM2IwM2ZkNmM1
MmEyZmRmMjgzZTU2Mjc1OC4uYjEyYzBjMWVlMmZmODE0MTQ1ZGFkMGEzNDZkMWM3YTc3NGI2YTc4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xOTQsNyAr
MTk0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU3VwcG9ydGluZyB0aWxlZCBkcmF3aW5nCiAg
ICAgdmlydHVhbCBib29sIG1heUZpbGxXaXRoU29saWRDb2xvcigpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsg
fQorICAgIHZpcnR1YWwgQ29sb3Igc29saWRDb2xvcigpIHsgcmV0dXJuIENvbG9yKCk7IH0KICAg
ICAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRh
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURh
dGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNhZjY4MjA4N2EzNmY1ZGEyOTZiMGQ4ZjRhY2EwM2NiOGY2Mjcx
ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lRGF0YS5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
bWFnZUZyYW1lRGF0YS5oIgorCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICAKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YSgpCit7Cit9
CisKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShJbWFnZURlY29kZXImIGRlY29kZXIs
IHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICwgbV9zdWJz
YW1wbGluZ0xldmVsKHN1YnNhbXBsaW5nTGV2ZWwpCisgICAgLCBtX2hhdmVNZXRhZGF0YSh0cnVl
KQoreworI2lmIFVTRShDRykKKyAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5vcmllbnRhdGlv
bkF0SW5kZXgoaW5kZXgpOworICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFB
dEluZGV4KGluZGV4KTsKKyAgICBtX2ZyYW1lQnl0ZXMgPSBkZWNvZGVyLmZyYW1lQnl0ZXNBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAKKyAgICBtX2FsbG93U3Vic2FtcGxp
bmcgPSBkZWNvZGVyLmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRleCk7CisgICAg
CisgICAgbV9pc0NvbXBsZXRlID0gZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4
KTsKKyAgICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkK
KyAgICAgICAgbV9kdXJhdGlvbiA9IGRlY29kZXIuZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgp
OworI2Vsc2UKKyAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5vcmllbnRhdGlvbigpOworICAg
IG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICBt
X2ZyYW1lQnl0ZXMgPSBkZWNvZGVyLmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KTsKKyAgICAKKyAg
ICBJbWFnZUZyYW1lKiBidWZmZXIgPSBkZWNvZGVyLmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7
CisgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1l
RW1wdHkpIHsKKyAgICAgICAgbV9pc0NvbXBsZXRlID0gYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFn
ZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAgICAgICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291
bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkgeworICAgICAgICAgICAgLy8gTWFueSBhbm5veWluZyBh
ZHMgc3BlY2lmeSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlja2x5
IGFzIHBvc3NpYmxlLgorICAgICAgICAgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlv
ciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lm
eQorICAgICAgICAgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJv
YmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+CisgICAgICAgICAg
ICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIG1fZHVyYXRpb24gPSBzdGQ6
Om1heChidWZmZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBmLCAwLjEwMGYpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCit9CisKK0ltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEoKQorewor
ICAgIGNsZWFyKEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpOworfQorCitJbWFnZUZyYW1l
U3RhdHVzIEltYWdlRnJhbWVEYXRhOjpzdGF0dXMoKSBjb25zdAoreworICAgIGlmICghbV9pbWFn
ZSkKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWVTdGF0dXM6OkRlY29kZU5vbmU7CisgICAgCisg
ICAgcmV0dXJuIG1faXNDb21wbGV0ZSA/IEltYWdlRnJhbWVTdGF0dXM6OkRlY29kZUNvbXBsZXRl
IDogSW1hZ2VGcmFtZVN0YXR1czo6RGVjb2RlUGFydGlhbDsKK30KKyAgICAKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE0YWZmODY0MjI4ODc5ZmZkNWZkZDM1MDczYWQ1ODk3YjU2MDYzM2EKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5o
CkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJbWFnZUZyYW1lRGF0YV9oCisjZGVmaW5lIEltYWdlRnJhbWVEYXRh
X2gKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgor
I2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorCisjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1YnNhbXBs
aW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordHlwZWRlZiBzaG9y
dCBTdWJzYW1wbGluZ0xldmVsOwordHlwZWRlZiBzaXplX3QgSW1hZ2VGcmFtZUluZGV4OworCitz
dGF0aWMgY29uc3QgSW1hZ2VGcmFtZUluZGV4IE1heEltYWdlRnJhbWVJbmRleCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8SW1hZ2VGcmFtZUluZGV4Pjo6bWF4KCk7CisKK2VudW0gY2xhc3MgSW1hZ2VG
cmFtZUNhY2hpbmcgeworICAgIENhY2hlTm9uZSwKKyAgICBDYWNoZU1ldGFkYXRhLAorICAgIENh
Y2hlRnJhbWUsCisgICAgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lCit9OworCitlbnVtIGNsYXNzIElt
YWdlRnJhbWVTdGF0dXMgeworICAgIERlY29kZU5vbmUsCisgICAgRGVjb2RlUGFydGlhbCwKKyAg
ICBEZWNvZGVDb21wbGV0ZQorfTsKKworY2xhc3MgSW1hZ2VEZWNvZGVyOworCitzdHJ1Y3QgSW1h
Z2VGcmFtZURhdGEgeworcHVibGljOgorICAgIEltYWdlRnJhbWVEYXRhKCk7CisgICAgSW1hZ2VG
cmFtZURhdGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICBJbWFnZUZyYW1lRGF0YShJbWFn
ZURlY29kZXImLCBJbWFnZUZyYW1lSW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiA9IG51bGxwdHIpOworICAgIH5JbWFnZUZyYW1lRGF0YSgpOworICAgIAorICAg
IEltYWdlRnJhbWVTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBjbGVhcihJ
bWFnZUZyYW1lQ2FjaGluZyk7CisgICAgT3B0aW9uYWw8Q29sb3I+IHNvbGlkQ29sb3IoKSBjb25z
dDsKKyAgICAKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlIHsgbnVsbHB0ciB9OworICAgIElt
YWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07
CisgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07CisgICAgZmxv
YXQgbV9kdXJhdGlvbiB7IDAgfTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAg
ICAgICAgICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOworICAgICAgICAgICAgYm9vbCBtX2lz
Q29tcGxldGUgOiAxOworICAgICAgICAgICAgYm9vbCBtX2hhc0FscGhhIDogMTsKKyAgICAgICAg
ICAgIGJvb2wgbV9hbGxvd1N1YnNhbXBsaW5nIDogMTsKKyAgICAgICAgfTsKKyAgICAgICAgdWlu
dDhfdCBtX2ZsYWdzW3NpemVvZihib29sKV0geyAwIH07CisgICAgfTsKKyAgICB1bnNpZ25lZCBt
X2ZyYW1lQnl0ZXMgeyAwIH07CisgICAgSW50U2l6ZSBtX3NpemU7Cit9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSW1hZ2VGcmFtZURhdGFfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc0ZWYw
NTNhMzMzZmY1ZmM1NzhlODE4MDBjYzZmYzk3NTVlZmJhYjguLjJmZmE0MGU0Mzg0ZTBiYjlhYWM1
ZWE3NzkyZDNkZTZiMTIzYjI0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTY4LDExICs2OCw2IEBAIHZvaWQgSW1hZ2VTb3Vy
Y2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJl
ZEJ1ZmZlcioKICAgICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi1i
b29sIEltYWdlU291cmNlOjppbml0aWFsaXplZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGVj
b2RlcjsKLX0KLQogdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIC8vIE1ha2UgdGhlIGRlY29kZXIgYnkgc25p
ZmZpbmcgdGhlIGJ5dGVzLgpAQCAtOTYsNyArOTEsNyBAQCBTdHJpbmcgSW1hZ2VTb3VyY2U6OmZp
bGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVy
LT5maWxlbmFtZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwg
SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCkgY29uc3QKK1N1YnNh
bXBsaW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCwg
U3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTExMSwyMSAr
MTA2LDI1IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCiAgICAgcmV0dXJu
IG1fZGVjb2RlciAmJiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCi1JbnRTaXpl
IEltYWdlU291cmNlOjpzaXplKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bikgY29uc3QKK0ludFNpemUgSW1hZ2VTb3VyY2U6OnNpemUoKSBjb25zdAogewotICAgIHJldHVy
biBmcmFtZVNpemVBdEluZGV4KDAsIDAsIGRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gZnJhbWVT
aXplQXRJbmRleCgwLCAwKTsKK30KKyAgICAKK0ludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4
KDAsIDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAotSW50U2l6ZSBJbWFnZVNvdXJj
ZTo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikgY29uc3QKK0ludFNpemUgSW1hZ2VT
b3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24p
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2RlY29kZXIpCisgICAgaWYgKCFpbml0aWFsaXplZCgpKQog
ICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVy
LT5mcmFtZVNpemVBdEluZGV4KGluZGV4KTsKLSAgICBpZiAoKGRlc2NyaXB0aW9uLnJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pICYmIG1fZGVjb2Rl
ci0+b3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQotICAgICAgICByZXR1cm4gSW50
U2l6ZShzaXplLmhlaWdodCgpLCBzaXplLndpZHRoKCkpOworICAgIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24gPSBtX2RlY29kZXItPm9yaWVudGF0aW9uKCk7CiAKLSAgICByZXR1cm4gc2l6
ZTsKKyAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdElt
YWdlT3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUu
dHJhbnNwb3NlZFNpemUoKSA6IHNpemU7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNw
b3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CkBAIC0xNDgsNyArMTQ3LDcgQEAgc2l6ZV90IElt
YWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9k
ZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwp
CitQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAppbmRleCBhY2RkMWNlNGNlMzAwZGU4MWM5ZTA2MmVlZTc2MDdiZjQ3MmE3
MGFmLi5jYzcyZmY0N2E1NDE0NDBkNjUyZjY1MGVhNWQ2MGY1MTNjZWNiMWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDYsMTggKzQ2
LDkgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2hhcmVkQnVmZmVy
OwogCi0jaWYgVVNFKENHKQotdHlwZWRlZiBDR0ltYWdlU291cmNlUmVmIE5hdGl2ZUltYWdlRGVj
b2RlclB0cjsKLSNlbHNlCiBjbGFzcyBJbWFnZURlY29kZXI7CiB0eXBlZGVmIEltYWdlRGVjb2Rl
ciogTmF0aXZlSW1hZ2VEZWNvZGVyUHRyOwotI2VuZGlmCi0KLSNpZiBVU0UoQ0cpCi0jZGVmaW5l
IE5hdGl2ZUltYWdlRGVjb2RlciBJbWFnZURlY29kZXIKLSNlbHNlCiB0eXBlZGVmIEltYWdlRGVj
b2RlciBOYXRpdmVJbWFnZURlY29kZXI7Ci0jZW5kaWYKIAogLy8gUmlnaHQgbm93IEdJRnMgYXJl
IHRoZSBvbmx5IHJlY29nbml6ZWQgaW1hZ2UgZm9ybWF0IHRoYXQgc3VwcG9ydHMgYW5pbWF0aW9u
LgogLy8gVGhlIGFuaW1hdGlvbiBzeXN0ZW0gYW5kIHRoZSBjb25zdGFudHMgYmVsb3cgYXJlIGRl
c2lnbmVkIHdpdGggdGhpcyBpbiBtaW5kLgpAQCAtMTEwLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBkZWNvZGVkIGZyYW1lcy4KICAgICAvLwogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBj
YWxsIGNsZWFyKGZhbHNlLCBuKSBhbmQgc3Vic2VxdWVudGx5IGNhbGwKLSAgICAvLyBjcmVhdGVG
cmFtZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5sZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0
cnVlKS4KKyAgICAvLyBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChtKSB3aXRoIG0gPCBuLCB1bmxl
c3MgdGhleSBmaXJzdCBjYWxsIGNsZWFyKHRydWUpLgogICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0
IHN0YXRlZnVsIEltYWdlU291cmNlcy9kZWNvZGVycyB3aWxsIHdvcmsgcHJvcGVybHkuCiAgICAg
Ly8KICAgICAvLyBUaGUgfGRhdGF8IGFuZCB8YWxsRGF0YVJlY2VpdmVkfCBwYXJhbWV0ZXJzIHNo
b3VsZCBiZSBzdXBwbGllZCBieSBjYWxsZXJzCkBAIC0xMjIsMTkgKzExMywyMCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICBTaGFyZWRCdWZmZXIqIGRhdGEgPSBOVUxMLAogICAgICAgICAgICAg
ICAgYm9vbCBhbGxEYXRhUmVjZWl2ZWQgPSBmYWxzZSk7CiAKLSAgICBib29sIGluaXRpYWxpemVk
KCkgY29uc3Q7CisgICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rl
cjsgfQogCiAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwogCi0gICAg
U3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQpIGNvbnN0Owor
ICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0LCBTdWJz
YW1wbGluZ0xldmVsKSBjb25zdDsKICAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJ
bmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKTsKICAgICAv
LyBBbHdheXMgb3JpZ2luYWwgc2l6ZSwgd2l0aG91dCBzdWJzYW1wbGluZy4KLSAgICBJbnRTaXpl
IHNpemUoSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKCkpIGNvbnN0OworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0OworICAgIEludFNpemUg
c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0OwogICAgIC8vIFNpemUgb2Ygb3B0aW9u
YWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkgY29uc3Q7CisgICAgSW50U2l6ZSBmcmFtZVNp
emVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwogCiAgICAg
Ym9vbCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Q7CiAKQEAgLTE0Niw3ICsxMzgsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxp
bmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBj
bGVhcigpIGFib3ZlLgotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7CisgICAgUGFzc05hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOwogCiAg
ICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBib29sIGZyYW1lSGFz
QWxwaGFBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBhY3R1YWxs
eSB1c2VkIGFueSBhbHBoYS4KQEAgLTE2Myw3ICsxNTUsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICBOYXRpdmVJbWFnZURlY29kZXJQdHIgbV9kZWNvZGVyOworICAgIHZvaWQg
ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIqKTsKKworICAgIE5hdGl2ZUltYWdl
RGVjb2RlclB0ciBtX2RlY29kZXIgeyBudWxscHRyIH07CiAKICNpZiAhVVNFKENHKQogICAgIEFs
cGhhT3B0aW9uIG1fYWxwaGFPcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAppbmRleCBkZjk0MWE1NjZhOWU0NjkyNzcyN2JhMWVj
Njg0OGYyMTY4MDNhNDViLi5lY2ExYjkyYzQxZWUxODI4ZTMxMGQ1YmVkYmIyYjVhY2E1OTVmNTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVB0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdl
UHRyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgTmF0aXZlSW1hZ2VQdHJfaAogCiAjaWYg
VVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIHR5cGVkZWYgc3RydWN0IENHSW1h
Z2UqIENHSW1hZ2VSZWY7CiAjZWxpZiBVU0UoQ0FJUk8pCiAjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8u
aCIKQEAgLTQxLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRklYTUU6IE5hdGl2
ZUltYWdlUHRyIGFuZCBQYXNzTmF0aXZlSW1hZ2VQdHIgc2hvdWxkIGJlIHNtYXJ0CiAvLyBwb2lu
dGVycyAoc2VlIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKS4KICNpZiBV
U0UoQ0cpCi10eXBlZGVmIENHSW1hZ2VSZWYgTmF0aXZlSW1hZ2VQdHI7Cit0eXBlZGVmIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBOYXRpdmVJbWFnZVB0cjsKICNlbGlmIFVTRShDQUlSTykKIHR5cGVk
ZWYgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gTmF0aXZlSW1hZ2VQdHI7CiB0eXBlZGVmIFBhc3NS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBQYXNzTmF0aXZlSW1hZ2VQdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApp
bmRleCA2M2RjZjBhMjUzZTIzNDBmNjdmMWM4MWQ4NWZjMjcwZGQyMzBlODZkLi5hNGM2NWJkZmYz
MmE5MmY5YzFkZjI2ZDRiZjUzMDgwZjA1YWI5NjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTEwMzcs
NyArMTAzNyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvU29saWRDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNU
b0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgQ0dJbWFn
ZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOworICAg
ICAgICBDR0ltYWdlUmVmIG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkuZ2V0KCk7CiAgICAgICAgIGlmICghbmV3SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jp
dG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggY2Q1N2VlNDg1ZWE4MGM2Y2YzNDdhYjNiZDk3
MzdkNTk5OWUxMDI4Mi4uMTNkNDM5NjgyNTVhMTgwZDk2ZGJiYTQwOGZjODI3OWMwZjAzMWYzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTQwLDE2ICs0MCwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uo
b2JzZXJ2ZXIpCi0gICAgLCBtX3NpemUoY2Fpcm9TdXJmYWNlU2l6ZShuYXRpdmVJbWFnZS5nZXQo
KSkpCi0gICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsKDApCiAgICAgLCBtX2N1cnJlbnRG
cmFtZSgwKQogICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBt
X3JlcGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQogICAgICwgbV9yZXBldGl0aW9uc0NvbXBs
ZXRlKDApCi0gICAgLCBtX2RlY29kZWRTaXplKG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdo
dCgpICogNCkKICAgICAsIG1fZnJhbWVDb3VudCgxKQotICAgICwgbV9pc1NvbGlkQ29sb3IoZmFs
c2UpCi0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQogICAgICwgbV9hbmltYXRp
b25GaW5pc2hlZCh0cnVlKQogICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKICAgICAsIG1f
aGF2ZVNpemUodHJ1ZSkKQEAgLTU3LDExICs1Miw5IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIq
CiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiB7CiAgICAgbV9mcmFtZXMuZ3JvdygxKTsK
LSAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChu
YXRpdmVJbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKLSAgICBtX2ZyYW1lc1sw
XS5tX2ZyYW1lID0gbmF0aXZlSW1hZ2U7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEg
PSB0cnVlOwotCi0gICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CisgICAgbV9mcmFtZXNbMF0gPSBJ
bWFnZUZyYW1lRGF0YShuYXRpdmVJbWFnZSk7CisgICAgbV9zaXplID0gbV9mcmFtZXNbMF0ubV9z
aXplOworICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQo
KSAqIDQ7CiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLApAQCAtNzIsNyArNjUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwog
CiAgICAgc3RhcnRBbmltYXRpb24oKTsKIAotICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1
cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOworICAgIFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAg
ICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGlt
YWdlIHlldC4KICAgICAgICAgcmV0dXJuOwogCkBAIC0xMjQsNDcgKzExNyw1MSBAQCB2b2lkIEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3QsIGNvbnN0IEZsbwogCiB2b2lkIEJpdG1hcEltYWdlOjpkZXRlcm1pbmVNaW5pbXVtU3Vi
c2FtcGxpbmdMZXZlbCgpIGNvbnN0CiB7Ci0gICAgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZlbCA9
IDA7CisgICAgbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCA9IDA7CiB9CiAKLXZvaWQgQml0bWFw
SW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURh
dGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorICAgIDogbV9pbWFnZShpbWFnZSkKKyAg
ICAsIG1faGF2ZU1ldGFkYXRhKHRydWUpCisgICAgLCBtX2lzQ29tcGxldGUodHJ1ZSkKIHsKLSAg
ICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0
cnVlOwotCi0gICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50
RnJhbWUpOwotICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3Qg
aGF2ZSBhbiBpbWFnZSB5ZXQuCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChjYWlyb19zdXJm
YWNlX2dldF90eXBlKHN1cmZhY2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgSW50U2l6ZSBzaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShz
dXJmYWNlLmdldCgpKTsKLQotICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdo
dCgpICE9IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkKiBwaXhlbENvbG9yID0g
cmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9k
YXRhKHN1cmZhY2UuZ2V0KCkpKTsKLSAgICBtX3NvbGlkQ29sb3IgPSBjb2xvckZyb21QcmVtdWx0
aXBsaWVkQVJHQigqcGl4ZWxDb2xvcik7Ci0KLSAgICBtX2lzU29saWRDb2xvciA9IHRydWU7Cisg
ICAgQVNTRVJUKG1faW1hZ2UpOworICAgIG1fc2l6ZSA9IGNhaXJvU3VyZmFjZVNpemUobV9pbWFn
ZS5nZXQoKSk7CisgICAgbV9mcmFtZUJ5dGVzID0gbV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVp
Z2h0KCkgKiA0OworICAgIG1faGFzQWxwaGEgPSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1f
aW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7CiB9CiAKLWJvb2wgRnJhbWVEYXRh
OjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCisKK2Jvb2wgSW1hZ2VGcmFtZURhdGE6OmNsZWFy
KGJvb2wgY2xlYXJNZXRhZGF0YSkKIHsKICAgICBpZiAoY2xlYXJNZXRhZGF0YSkKICAgICAgICAg
bV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAgICAgIG1f
ZnJhbWUgPSBudWxscHRyOworICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAgIG1faW1hZ2UgPSBu
dWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitPcHRpb25hbDxDb2xvcj4gSW1hZ2VGcmFtZURhdGE6OnNvbGlkQ29sb3IoKSBjb25zdAor
eworICAgIGlmICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgCisgICAg
aWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9pbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFD
RV9UWVBFX0lNQUdFKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKworICAgIEludFNpemUgc2l6
ZSA9IGNhaXJvU3VyZmFjZVNpemUobV9pbWFnZS5nZXQoKSk7CisKKyAgICBpZiAoc2l6ZS53aWR0
aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsK
KworICAgIHVuc2lnbmVkKiBwaXhlbENvbG9yID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWdu
ZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1faW1hZ2UuZ2V0KCkpKTsKKyAgICBy
ZXR1cm4gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29sb3IpOworfQorCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggY2M3MDQ2MTQ3YWU4MWYxZmFkYWE2ZDg0MTYyNDk4
MGM2ZmRmY2JmMS4uOGM0MTg2ZDcxZTUzYTE5MDdlOTJkNzNhMmIwMTY0N2ZmZDY2YjFjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBkZWNvZGVyLnNldERhdGEobV9pbWFnZS0+ZGF0
YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rl
ci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOwor
ICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
MCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICAvLyAxLiBGb3IgdGV4SW1hZ2UyRCB3
aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5QWxwaGEgaGFk
IGJlZW4gYXBwbGllZCBhbmQgdGhlIGFscGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVhY2ggcGl4ZWws
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJ
bWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcElt
YWdlQ0cuY3BwCmluZGV4IDAxYjdkNjkyY2RiZDdhYjRkMjJiYmMxMzk5YzEwMzI4ZjU3ZTVlNDcu
LjVhYzMzNmQyYWZjMjZmYjEyNDMxOWZkZjY0NjVmNTJjNWNkODE0YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBA
IC00OSwzMSArNDksNjMgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitJ
bWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
KQorICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICAsIG1faGF2ZU1ldGFkYXRhKHRydWUpCisgICAg
LCBtX2lzQ29tcGxldGUodHJ1ZSkKKyAgICAsIG1faGFzQWxwaGEodHJ1ZSkKK3sKKyAgICBBU1NF
UlQobV9pbWFnZSk7CisgICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChtX2ltYWdl
LmdldCgpKTsKKyAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9pbWFnZS5n
ZXQoKSk7CisgICAgbV9mcmFtZUJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OworICAgIG1fc2l6
ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7Cit9CiAKLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihi
b29sIGNsZWFyTWV0YWRhdGEpCitib29sIEltYWdlRnJhbWVEYXRhOjpjbGVhcihJbWFnZUZyYW1l
Q2FjaGluZyBmcmFtZUNhY2hpbmcpCiB7Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCisgICAgaWYg
KGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVOb25lKQogICAgICAgICBt
X2hhdmVNZXRhZGF0YSA9IGZhbHNlOwogCiAgICAgbV9vcmllbnRhdGlvbiA9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uOwogICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IDA7CiAKLSAgICBpZiAobV9m
cmFtZSkgeworICAgIGlmIChtX2ltYWdlKSB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAg
IHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1fZnJhbWUpOworICAgICAgICBzdWJpbWFnZUNh
Y2hlKCkuY2xlYXJJbWFnZShtX2ltYWdlLmdldCgpKTsKICNlbmRpZgotICAgICAgICBDR0ltYWdl
UmVsZWFzZShtX2ZyYW1lKTsKLSAgICAgICAgbV9mcmFtZSA9IDA7CisgICAgICAgIG1faW1hZ2Ug
PSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwogfQorICAgIAorT3B0aW9uYWw8Q29sb3I+IEltYWdlRnJhbWVEYXRhOjpzb2xpZENvbG9yKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAg
IAorICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZvciBzb2xpZCBjb2xvciBpbiB0aGUg
aW1wb3J0YW50IHNwZWNpYWwgY2FzZSBvZiBhIDF4MSBpbWFnZS4KKyAgICBpZiAoQ0dJbWFnZUdl
dFdpZHRoKG1faW1hZ2UuZ2V0KCkpICE9IDEgfHwgQ0dJbWFnZUdldEhlaWdodChtX2ltYWdlLmdl
dCgpKSAhPSAxKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAKKyAgICB1bnNpZ25lZCBj
aGFyIHBpeGVsWzRdOyAvLyBSR0JBCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFw
Q29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBz
aXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworICAgIGlmICghYml0bWFwQ29u
dGV4dCkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgCisgICAgR3JhcGhpY3NDb250ZXh0
KGJpdG1hcENvbnRleHQuZ2V0KCkpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5
KTsKKyAgICBDR1JlY3QgZGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKTsK
KyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25S
ZWN0LCBtX2ltYWdlLmdldCgpKTsKKyAgICBpZiAoIXBpeGVsWzNdKQorICAgICAgICByZXR1cm4g
Q29sb3IoMCwgMCwgMCwgMCk7CisgICAgCisgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1
IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8g
cGl4ZWxbM10sIHBpeGVsWzNdKTsKK30KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1h
Z2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQog
ICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsKDAp
Ci0gICAgLCBtX2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkKLSAgICAsIG1fc2hvdWxk
UmVzcGVjdEltYWdlT3JpZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRGcmFtZSgwKQog
ICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3JlcGV0aXRp
b25Db3VudFN0YXR1cyhVbmtub3duKQpAQCAtODEsMTYgKzExMywxNCBAQCBCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
ICAgICAsIG1fZGVjb2RlZFNpemUoMCkKICAgICAsIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplKDAp
CiAgICAgLCBtX2ZyYW1lQ291bnQoMSkKLSAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQotICAg
ICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkKICAgICAsIG1fYW5pbWF0aW9uRmluaXNo
ZWQodHJ1ZSkKICAgICAsIG1fYWxsRGF0YVJlY2VpdmVkKHRydWUpCiAgICAgLCBtX2hhdmVTaXpl
KHRydWUpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291
bnQodHJ1ZSkKIHsKLSAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2Up
OwotICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKTsKKyAgICBD
R0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKKyAgICBDR0Zsb2F0
IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwogICAgIG1fZGVjb2RlZFNp
emUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CiAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKIApAQCAtOTksMTEgKzEyOSw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0lt
YWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6ZVJlc3Bl
Y3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZTsKIAogICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAg
bV9mcmFtZXNbMF0ubV9mcmFtZSA9IENHSW1hZ2VSZXRhaW4oY2dJbWFnZSk7Ci0gICAgbV9mcmFt
ZXNbMF0ubV9oYXNBbHBoYSA9IHRydWU7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEg
PSB0cnVlOwotCi0gICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CisgICAgbV9mcmFtZXNbMF0gPSBJ
bWFnZUZyYW1lRGF0YShpbWFnZSk7CiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRldGVybWluZU1p
bmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKQEAgLTEyNSw2NCArMTUxLDIxIEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmRldGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwg
PSBjdXJyZW50TGV2ZWw7Ci19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xv
cigpCi17Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7Ci0gICAgbV9pc1NvbGlk
Q29sb3IgPSBmYWxzZTsKLQotICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIWhhdmVGcmFtZUF0SW5kZXgoMCkpIHsKLSAgICAgICAgSW50U2l6ZSBz
aXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLSAgICAgICAgaWYgKHNpemUu
d2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoMCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IG51bGxwdHI7Ci0gICAgaWYgKG1f
ZnJhbWVzLnNpemUoKSkKLSAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1swXS5tX2ZyYW1lOwotCi0g
ICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQ3VycmVudGx5IHdlIG9u
bHkgY2hlY2sgZm9yIHNvbGlkIGNvbG9yIGluIHRoZSBpbXBvcnRhbnQgc3BlY2lhbCBjYXNlIG9m
IGEgMXgxIGltYWdlLgotICAgIGlmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IDEgJiYgQ0dJ
bWFnZUdldEhlaWdodChpbWFnZSkgPT0gMSkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVs
WzRdOyAvLyBSR0JBCi0gICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9m
KHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwKLSAgICAgICAgICAgIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7Ci0gICAgICAgIGlm
ICghYml0bWFwQ29udGV4dCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3JhcGhpY3ND
b250ZXh0KGJpdG1hcENvbnRleHQuZ2V0KCkpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVDb3B5KTsKLSAgICAgICAgQ0dSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IENHUmVjdE1ha2UoMCwg
MCwgMSwgMSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgp
LCBkZXN0aW5hdGlvblJlY3QsIGltYWdlKTsKLSAgICAgICAgaWYgKCFwaXhlbFszXSkKLSAgICAg
ICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKDAsIDAsIDAsIDApOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNd
LCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFszXSk7Ci0KLSAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOwotICAgIH0KKyAgICBt
X21heGltdW1TdWJzYW1wbGluZ0xldmVsID0gY3VycmVudExldmVsOwogfQogCiBDR0ltYWdlUmVm
IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKCkKIHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4
KDApOworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKIH0KIAogQ0dJbWFn
ZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2Ug
PSBmcmFtZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmIChjZ0ltYWdlICYmIEludFNpemUoQ0dJbWFn
ZUdldFdpZHRoKGNnSW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpKSA9PSBzaXplKQot
ICAgICAgICAgICAgcmV0dXJuIGNnSW1hZ2U7CisgICAgICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBp
bWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoaW1hZ2UgJiYgSW50U2l6
ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdl
dCgpKSkgPT0gc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBpbWFnZS5nZXQoKTsKICAgICB9CiAK
ICAgICAvLyBGYWxsYmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNhbid0IGZp
bmQgdGhlIHJpZ2h0IHNpemUKQEAgLTE5Nyw4ICsxODAsOCBAQCBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCiAgICAgCiAgICAgQ0ZNdXRhYmxlQXJy
YXlSZWYgYXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShOVUxMLCBjb3VudCwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7
Ci0gICAgICAgIGlmIChDR0ltYWdlUmVmIGN1cnJGcmFtZSA9IGZyYW1lQXRJbmRleChpKSkKLSAg
ICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKKyAgICAgICAg
aWYgKE5hdGl2ZUltYWdlUHRyIGN1cnJGcmFtZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpKQorICAg
ICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJyRnJhbWUuZ2V0KCkpOwogICAg
IH0KICAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7CiB9CkBAIC0yMTEsMTUgKzE5NCwxNSBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAjZW5kaWYKIAot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBpbWFn
ZTsKICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcgaW50byBQ
REYgY29udGV4dHMuCiAgICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZv
cm1Db250ZXh0KCkpKQotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVkRnJhbWVB
dEluZGV4KG1fY3VycmVudEZyYW1lKSk7CisgICAgICAgIGltYWdlID0gY29weVVuc2NhbGVkRnJh
bWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAgIGVsc2UgewogICAgICAgICBDR1Jl
Y3QgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RBcHBseUFmZmluZVRyYW5zZm9y
bShkZXN0UmVjdCwgQ0dDb250ZXh0R2V0Q1RNKGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKTsKICAg
ICAgICAgZmxvYXQgc3Vic2FtcGxpbmdTY2FsZSA9IHN0ZDo6bWluPGZsb2F0PigxLCBzdGQ6Om1h
eCh0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLndpZHRoIC8gc3JjUmVjdC53aWR0aCgp
LCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLmhlaWdodCAvIHNyY1JlY3QuaGVpZ2h0
KCkpKTsKIAotICAgICAgICBpbWFnZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgc3Vi
c2FtcGxpbmdTY2FsZSk7CisgICAgICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJy
ZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOwogICAgIH0KIAogICAgIGlmICghaW1hZ2UpIC8v
IElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgpAQCAtMjUxLDE4
ICsyMzQsMTggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICAgICAgaW1hZ2VPYnNlcnZl
cigpLT5kaWREcmF3KHRoaXMpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6
OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitQYXNzTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2lu
ZGV4XS5tX2ZyYW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJh
bWVzW2luZGV4XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsKIAogICAg
IGlmICghbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJu
IENHSW1hZ2VSZXRhaW4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpOworICAgICAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiAKLSAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJh
bWVBdEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoaW5kZXgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDZjMDNhMmNl
Zjg0NjA2NTYxZWEwN2ViOTI4ZjFjZjI5NWY5ZjVlMzYuLjdhMTNiYjU4NDY3MDhkMzdlMDJiZDNk
ZDY3MjNjMjdhNDk1MTc2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0zMzMsMTAgKzMz
MywxMCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdElt
YWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29kZXIuZnJh
bWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fZGVjb2Rl
ZEltYWdlID0gYWRvcHRDRihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7CisgICAgICAg
IG1fZGVjb2RlZEltYWdlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgwKTsKICAg
ICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIG1fY2dJbWFnZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Cisg
ICAgICAgIG1fY2dJbWFnZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCku
Z2V0KCk7CiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NTM2LDcgKzUzNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29u
c3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgY29udGV4dC5zY2Fs
ZShGbG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VIZWln
aHQpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uTm9uZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1h
Z2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBD
b21wb3NpdGVDb3B5KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFn
ZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIENv
bXBvc2l0ZUNvcHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAKaW5kZXggYTQ0OTY1NDA0NmFlOGYxMGFiYWQxNjQxNWU2NDYwYWRiYmJiOGU4OC4uMTYyMDlh
ZjUzNDQ4MWRiNGNkZGQ4YjQyM2NlN2JmMmE0MGIwZGJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApA
QCAtMzExLDggKzMxMSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgZmxvYXQgYWRq
dXN0ZWRYID0gcGhhc2UueCgpIC0gZGVzdFJlY3QueCgpICsgdGlsZVJlY3QueCgpICogbmFycm93
UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7IC8vIFdlIHRyYW5zbGF0ZWQg
dGhlIGNvbnRleHQgc28gdGhhdCBkZXN0UmVjdC54KCkgaXMgdGhlIG9yaWdpbiwgc28gc3VidHJh
Y3QgaXQgb3V0LgogICAgIGZsb2F0IGFkanVzdGVkWSA9IGRlc3RSZWN0LmhlaWdodCgpIC0gKHBo
YXNlLnkoKSAtIGRlc3RSZWN0LnkoKSArIHRpbGVSZWN0LnkoKSAqIG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQocGF0dGVyblRyYW5zZm9ybS5kKCkpICsgc2NhbGVkVGlsZUhlaWdodCk7CiAKLSAgICBD
R0ltYWdlUmVmIHRpbGVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7
Ci0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlKTsKKyAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwog
CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogI2lmIFBMQVRGT1JNKElPUykK
QEAgLTMyNiwxMyArMzI2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgICAgIC8v
IENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1hZ2Ugc3Rv
cHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5ldmVyIGhh
cHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBmb3IgYm9y
ZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVsbHkgZGVj
b2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOwotICAgICAgICBzdWJJ
bWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UsIHRp
bGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0aElt
YWdlSW5SZWN0KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAgICAvLyBJ
ZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhhdmUgYSBw
YXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8gZmFsbCBi
YWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNtLgogICAg
IGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJbWFnZUdl
dFdpZHRoKHRpbGVJbWFnZSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1h
Z2UuZ2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGggPT0gaW1h
Z2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcuaGVpZ2h0
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdlcyB0byBp
bnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdlLXJlcGVh
dDogcm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBsYXN0LCBh
bmQgc3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyNWFj
NGFmMTMwMWU0YjViMWM3MjI2YTU1OWYyZjM5M2VkOGI0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuY3BwCkBAIC0w
LDAgKzEsNDEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorCisjaWYg
VVNFKENHKQorCisjaW5jbHVkZSAiQ29yZUdyYXBoaWNzU1BJLmgiCisjaW5jbHVkZSAiSW1hZ2VP
cmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5o
IgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmICFQTEFURk9STShJT1Mp
CisjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Cisj
ZWxzZQorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNlbmRpZgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPElt
YWdlSU8vQ0dJbWFnZVNvdXJjZVByaXZhdGUuaD4KKyNlbHNlCitjb25zdCBDRlN0cmluZ1JlZiBr
Q0dJbWFnZVNvdXJjZVN1YnNhbXBsZUZhY3RvciA9IENGU1RSKCJrQ0dJbWFnZVNvdXJjZVN1YnNh
bXBsZUZhY3RvciIpOworY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTaG91bGRDYWNo
ZUltbWVkaWF0ZWx5ID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU2hvdWxkQ2FjaGVJbW1lZGlhdGVs
eSIpOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NvbnN0IENGU3RyaW5n
UmVmIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HVW5jbGFtcGVkRGVsYXlUaW1lID0gQ0ZTVFIo
IlVuY2xhbXBlZERlbGF5VGltZSIpOworY29uc3QgQ0ZTdHJpbmdSZWYgV2ViQ29yZUNHSW1hZ2VQ
cm9wZXJ0eUFQTkdEZWxheVRpbWUgPSBDRlNUUigiRGVsYXlUaW1lIik7Citjb25zdCBDRlN0cmlu
Z1JlZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR0xvb3BDb3VudCA9IENGU1RSKCJMb29wQ291
bnQiKTsKKworY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0Iz
MiA9IENGU1RSKCJrQ0dJbWFnZVNvdXJjZVNob3VsZFByZWZlclJHQjMyIik7Citjb25zdCBDRlN0
cmluZ1JlZiBrQ0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSA9IENGU1RSKCJrQ0dJbWFnZVNvdXJj
ZVNraXBNZXRhZGF0YSIpOworCitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3Jl
YXRlSW1hZ2VTb3VyY2VPcHRpb25zKFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwg
RGVjb2RlTW9kZSBkZWNvZGVNb2RlKQoreworICAgIGNvbnN0IENGSW5kZXggYmFzaWNPcHRpb25z
ID0gMzsKKyAgICBjb25zdCB2b2lkKiBrZXlzW2Jhc2ljT3B0aW9ucyArIDJdID0geyBrQ0dJbWFn
ZVNvdXJjZVNob3VsZENhY2hlLCBrQ0dJbWFnZVNvdXJjZVNob3VsZFByZWZlclJHQjMyLCBrQ0dJ
bWFnZVNvdXJjZVNraXBNZXRhZGF0YSB9OworICAgIGNvbnN0IHZvaWQqIHZhbHVlc1tiYXNpY09w
dGlvbnMgKyAyXSA9IHsga0NGQm9vbGVhblRydWUsIGtDRkJvb2xlYW5UcnVlLCBrQ0ZCb29sZWFu
VHJ1ZSB9OworICAgIENGSW5kZXggbnVtT3B0aW9ucyA9IGJhc2ljT3B0aW9uczsKKyAgICAKKyAg
ICBpZiAoc3Vic2FtcGxpbmdMZXZlbCA+IDApIHsKKyAgICAgICAgc2hvcnQgY29uc3RyYWluZWRT
dWJzYW1wbGluZ0xldmVsID0gc3RkOjptaW48c2hvcnQ+KDMsIHN0ZDo6bWF4PHNob3J0PigwLCBz
dWJzYW1wbGluZ0xldmVsKSk7CisgICAgICAgIGludCBzdWJzYW1wbGVJbnQgPSAxIDw8IGNvbnN0
cmFpbmVkU3Vic2FtcGxpbmdMZXZlbDsgLy8gWzAuLjNdID0+IFsxLCAyLCA0LCA4XQorICAgICAg
ICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN1YnNhbXBsZU51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1i
ZXJDcmVhdGUobnVsbHB0ciwgIGtDRk51bWJlckludFR5cGUsICAmc3Vic2FtcGxlSW50KSk7Cisg
ICAgICAgIAorICAgICAgICBrZXlzW251bU9wdGlvbnNdID0ga0NHSW1hZ2VTb3VyY2VTdWJzYW1w
bGVGYWN0b3I7CisgICAgICAgIHZhbHVlc1tudW1PcHRpb25zKytdID0ga0NHSW1hZ2VTb3VyY2VT
dWJzYW1wbGVGYWN0b3I7CisgICAgfQorICAgIAorICAgIGlmIChkZWNvZGVNb2RlID09IERlY29k
ZU1vZGU6OkltbWVkaWF0ZSkgeworICAgICAgICBrZXlzW251bU9wdGlvbnNdID0ga0NHSW1hZ2VT
b3VyY2VTaG91bGRDYWNoZUltbWVkaWF0ZWx5OworICAgICAgICB2YWx1ZXNbbnVtT3B0aW9ucysr
XSA9IGtDRkJvb2xlYW5UcnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUobnVsbHB0ciwga2V5cywgdmFsdWVzLCBudW1PcHRpb25zLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZVNvdXJjZU9w
dGlvbnMoU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0gMCwgRGVjb2RlTW9kZSBk
ZWNvZGVNb2RlID0gRGVjb2RlTW9kZTo6TGF6eSkKK3sKKyAgICBpZiAoc3Vic2FtcGxpbmdMZXZl
bCB8fCBkZWNvZGVNb2RlID09IERlY29kZU1vZGU6OkltbWVkaWF0ZSkKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsLCBkZWNvZGVNb2RlKTsK
KyAgICAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4+IG9wdGlvbnMgPSBjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMoMCwgRGVjb2RlTW9kZTo6TGF6
eSk7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGltYWdlUHJvcGVydGllcykK
K3sKKyAgICBBU1NFUlQoaW1hZ2VQcm9wZXJ0aWVzKTsKKyAgICBDRk51bWJlclJlZiBvcmllbnRh
dGlvblByb3BlcnR5ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlUHJv
cGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eU9yaWVudGF0aW9uKTsKKyAgICBpZiAoIW9yaWVudGF0
aW9uUHJvcGVydHkpCisgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKKyAg
ICAKKyAgICBpbnQgZXhpZlZhbHVlOworICAgIENGTnVtYmVyR2V0VmFsdWUob3JpZW50YXRpb25Q
cm9wZXJ0eSwga0NGTnVtYmVySW50VHlwZSwgJmV4aWZWYWx1ZSk7CisgICAgcmV0dXJuIEltYWdl
T3JpZW50YXRpb246OmZyb21FWElGVmFsdWUoZXhpZlZhbHVlKTsKK30KKyAgICAKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQq
IGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKK3sKKyAg
ICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+
KGluZm8pOworICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7Cisg
ICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIGNvbnN0IGNoYXIqIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9zaXRpb247
CisgICAgc2l6ZV90IGFtb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oY291bnQsIHNvdXJjZVNpemUg
LSBwb3NpdGlvbik7CisgICAgbWVtY3B5KGJ1ZmZlciwgc291cmNlLCBhbW91bnQpOworICAgIHJl
dHVybiBhbW91bnQ7Cit9CisKK3ZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQor
eworICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4oaW5mbyk7CisgICAgc2hhcmVkQnVmZmVyLT5kZXJlZigpOworfQorI2VuZGlmCisKK0lt
YWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKCkKK3sKKyAgICBtX25hdGl2ZURlY29kZXIgPSBDR0lt
YWdlU291cmNlQ3JlYXRlSW5jcmVtZW50YWwoMCk7Cit9CisKK1N1YnNhbXBsaW5nTGV2ZWwgSW1h
Z2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBs
aW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCit7CisgICAgLy8gVGhlcmUgYXJlIGZv
dXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAw
LjEyNXguCisgICAgZmxvYXQgY2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBz
dGQ6Om1pbjxmbG9hdD4oMSwgc2NhbGUpKTsKKyAgICBTdWJzYW1wbGluZ0xldmVsIHJlc3VsdCA9
IGNlaWxmKGxvZzJmKDEgLyBjbGFtcGVkU2NhbGUpKTsKKyAgICBBU1NFUlQocmVzdWx0ID49MCAm
JiByZXN1bHQgPD0gMyk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11bVN1YnNh
bXBsaW5nTGV2ZWwpOworfQorCitzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0Rl
dGVybWluZVByb3BlcnRpZXMoKQoreworICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcgbWFsbG9j
L2NhbGxvYyBjYWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCisgICAgLy8gQSBub24temVy
byB2YWx1ZSBlbnN1cmVzIGNhY2hlZCBpbWFnZXMgd2l0aCBubyBkZWNvZGVkIGZyYW1lcyBzdGls
bCBlbnRlcgorICAgIC8vIHRoZSBsaXZlIGRlY29kZWQgcmVzb3VyY2VzIGxpc3Qgd2hlbiB0aGUg
Q0dJbWFnZVNvdXJjZSBkZWNvZGVzIGltYWdlCisgICAgLy8gcHJvcGVydGllcywgYWxsb3dpbmcg
dGhlIGNhY2hlIHRvIHBydW5lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBpbWFnZS4KKyAgICAvLyBU
aGlzIHZhbHVlIGlzIGxpa2VseSB0byBiZSBpbmFjY3VyYXRlIG9uIG90aGVyIHBsYXRmb3Jtcywg
YnV0IHRoZSBvdmVyYWxsCisgICAgLy8gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLgorICAgIHJldHVy
biAxMzA4ODsKK30KKworU3RyaW5nIEltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24oKSBj
b25zdAoreworICAgIENGU3RyaW5nUmVmIGltYWdlU291cmNlVHlwZSA9IENHSW1hZ2VTb3VyY2VH
ZXRUeXBlKG1fbmF0aXZlRGVjb2Rlcik7CisgICAgcmV0dXJuIFdlYkNvcmU6OnByZWZlcnJlZEV4
dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShpbWFnZVNvdXJjZVR5cGUpOworfQorCitib29sIElt
YWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkgY29uc3QKK3sKKyAgICAvLyBSYWduYXJvcyB5
ZWxsczogVE9PIFNPT04hIFlvdSBoYXZlIGF3YWtlbmVkIG1lIFRPTyBTT09OLCBFeGVjdXR1cyEK
KyAgICBpZiAoQ0dJbWFnZVNvdXJjZUdldFN0YXR1cyhtX25hdGl2ZURlY29kZXIpIDwga0NHSW1h
Z2VTdGF0dXNJbmNvbXBsZXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2UwUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFn
ZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIsIDAsIGltYWdlU291
cmNlT3B0aW9ucygpLmdldCgpKSk7CisgICAgaWYgKCFpbWFnZTBQcm9wZXJ0aWVzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIENGRGljdGlvbmFyeUNvbnRhaW5zS2V5
KGltYWdlMFByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbFdpZHRoKQorICAg
ICYmIENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGltYWdlMFByb3BlcnRpZXMuZ2V0KCksIGtDR0lt
YWdlUHJvcGVydHlQaXhlbEhlaWdodCk7Cit9CisKK0ludFNpemUgSW1hZ2VEZWNvZGVyOjpzaXpl
KCkgY29uc3QKK3sKKyAgICBpZiAobV9zaXplLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zaXplID0g
ZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKKyAgICByZXR1cm4gbV9zaXplOworfQorCitzaXplX3Qg
SW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0dJbWFnZVNv
dXJjZUdldENvdW50KG1fbmF0aXZlRGVjb2Rlcik7Cit9CisKK2ludCBJbWFnZURlY29kZXI6OnJl
cGV0aXRpb25Db3VudCgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzKG1fbmF0aXZl
RGVjb2RlciwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKKyAgICBpZiAoIXByb3BlcnRp
ZXMpCisgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7CisgICAgCisgICAgQ0ZEaWN0
aW9uYXJ5UmVmIGdpZlByb3BlcnRpZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdl
dFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlHSUZEaWN0aW9uYXJ5KTsK
KyAgICBpZiAoZ2lmUHJvcGVydGllcykgeworICAgICAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZO
dW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZ2lmUHJvcGVydGllcywga0NHSW1hZ2VQcm9w
ZXJ0eUdJRkxvb3BDb3VudCk7CisgICAgICAgIAorICAgICAgICAvLyBObyBwcm9wZXJ0eSBtZWFu
cyBsb29wIG9uY2UuCisgICAgICAgIGlmICghbnVtKQorICAgICAgICAgICAgcmV0dXJuIGNBbmlt
YXRpb25Mb29wT25jZTsKKyAgICAgICAgCisgICAgICAgIGludCBsb29wQ291bnQ7CisgICAgICAg
IENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmbG9vcENvdW50KTsKKyAg
ICAgICAgCisgICAgICAgIC8vIEEgcHJvcGVydHkgd2l0aCB2YWx1ZSAwIG1lYW5zIGxvb3AgZm9y
ZXZlci4KKyAgICAgICAgcmV0dXJuIGxvb3BDb3VudCA/IGxvb3BDb3VudCA6IGNBbmltYXRpb25M
b29wSW5maW5pdGU7CisgICAgfQorICAgIAorICAgIENGRGljdGlvbmFyeVJlZiBwbmdQcm9wZXJ0
aWVzID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdl
dCgpLCBrQ0dJbWFnZVByb3BlcnR5UE5HRGljdGlvbmFyeSk7CisgICAgaWYgKHBuZ1Byb3BlcnRp
ZXMpIHsKKyAgICAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKHBuZ1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HTG9vcENv
dW50KTsKKyAgICAgICAgaWYgKCFudW0pCisgICAgICAgICAgICByZXR1cm4gY0FuaW1hdGlvbkxv
b3BPbmNlOworICAgICAgICAKKyAgICAgICAgaW50IGxvb3BDb3VudDsKKyAgICAgICAgQ0ZOdW1i
ZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZsb29wQ291bnQpOworICAgICAgICBy
ZXR1cm4gbG9vcENvdW50ID8gbG9vcENvdW50IDogY0FuaW1hdGlvbkxvb3BJbmZpbml0ZTsKKyAg
ICB9CisgICAgCisgICAgLy8gVHVybnMgb3V0IHdlJ3JlIG5vdCBhbiBhbmltYXRlZCBpbWFnZSBh
ZnRlciBhbGwsIHNvIHdlIGRvbid0IGFuaW1hdGUuCisgICAgcmV0dXJuIGNBbmltYXRpb25Ob25l
OworfQorCitib29sIEltYWdlRGVjb2Rlcjo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkg
Y29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRv
cHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlciwg
MCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKKyAgICBpZiAoIXByb3BlcnRpZXMpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpbnQgeCA9IC0xLCB5ID0gLTE7CisgICAg
Q0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3Bl
cnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIpKTsKKyAgICBpZiAoIW51bSB8fCAhQ0ZOdW1i
ZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ4KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShw
cm9wZXJ0aWVzLmdldCgpLCBDRlNUUigiaG90c3BvdFkiKSk7CisgICAgaWYgKCFudW0gfHwgIUNG
TnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmeSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBpZiAoeCA8IDAgfHwgeSA8IDApCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBob3RTcG90ID0gSW50UG9pbnQoeCwgeSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK0ludFNpemUgSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAoreworICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3Vy
Y2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3Vy
Y2VPcHRpb25zKHN1YnNhbXBsaW5nTGV2ZWwpLmdldCgpKSk7CisgICAgCisgICAgaWYgKCFwcm9w
ZXJ0aWVzKQorICAgICAgICByZXR1cm4geyB9OworICAgIAorICAgIGludCB3aWR0aCA9IDA7Cisg
ICAgaW50IGhlaWdodCA9IDA7CisgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhl
bFdpZHRoKTsKKyAgICBpZiAobnVtKQorICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NG
TnVtYmVySW50VHlwZSwgJndpZHRoKTsKKyAgICAKKyAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBpeGVs
SGVpZ2h0KTsKKyAgICBpZiAobnVtKQorICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NG
TnVtYmVySW50VHlwZSwgJmhlaWdodCk7CisgICAgCisgICAgcmV0dXJuIEludFNpemUod2lkdGgs
IGhlaWdodCk7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKKyAgICBy
ZXR1cm4gQ0dJbWFnZVNvdXJjZUdldFN0YXR1c0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLCBpbmRl
eCkgPT0ga0NHSW1hZ2VTdGF0dXNDb21wbGV0ZTsKK30KKworSW1hZ2VPcmllbnRhdGlvbiBJbWFn
ZURlY29kZXI6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNv
dXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIsIGluZGV4LCBpbWFnZVNv
dXJjZU9wdGlvbnMoKS5nZXQoKSkpOworICAgIGlmICghcHJvcGVydGllcykKKyAgICAgICAgcmV0
dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOworICAgIAorICAgIHJldHVybiBvcmllbnRhdGlv
bkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOworfQorCitmbG9hdCBJbWFnZURlY29k
ZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBmbG9h
dCBkdXJhdGlvbiA9IDA7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGll
cyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURl
Y29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOworICAgIGlmIChwcm9w
ZXJ0aWVzKSB7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiBnaWZQcm9wZXJ0aWVzID0gKENGRGlj
dGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFn
ZVByb3BlcnR5R0lGRGljdGlvbmFyeSk7CisgICAgICAgIGlmIChnaWZQcm9wZXJ0aWVzKSB7Cisg
ICAgICAgICAgICBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKGdpZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlHSUZVbmNsYW1wZWREZWxh
eVRpbWUpKSB7CisgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSB1bmNsYW1wZWQgZnJhbWUgZGVs
YXkgaWYgaXQgZXhpc3RzLgorICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBr
Q0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKENG
TnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShnaWZQcm9w
ZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5R0lGRGVsYXlUaW1lKSkgeworICAgICAgICAgICAgICAg
IC8vIEZhbGwgYmFjayB0byB0aGUgY2xhbXBlZCBmcmFtZSBkZWxheSBpZiB0aGUgdW5jbGFtcGVk
IGZyYW1lIGRlbGF5IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0
VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENGRGljdGlvbmFyeVJlZiBwbmdQcm9wZXJ0
aWVzID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdl
dCgpLCBrQ0dJbWFnZVByb3BlcnR5UE5HRGljdGlvbmFyeSk7CisgICAgICAgIGlmIChwbmdQcm9w
ZXJ0aWVzKSB7CisgICAgICAgICAgICBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVm
KUNGRGljdGlvbmFyeUdldFZhbHVlKHBuZ1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVy
dHlBUE5HVW5jbGFtcGVkRGVsYXlUaW1lKSkKKyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZh
bHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVyYXRpb24pOworICAgICAgICAgICAgZWxz
ZSBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KHBuZ1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HRGVsYXlUaW1lKSkKKyAg
ICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAm
ZHVyYXRpb24pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIE1hbnkgYW5ub3lpbmcg
YWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2ts
eSBhcyBwb3NzaWJsZS4KKyAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1
c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5CisgICAg
Ly8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBh
bmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+CisgICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRp
b24uCisgICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQorICAgICAgICByZXR1cm4gMC4xZjsKKyAg
ICByZXR1cm4gZHVyYXRpb247Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjphbGxvd1N1YnNhbXBs
aW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGll
c0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkp
OworICAgIGlmICghcHJvcGVydGllcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IENGRGljdGlvbmFyeVJlZiBqZmlmUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFy
eVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9w
ZXJ0eUpGSUZEaWN0aW9uYXJ5KSk7CisgICAgaWYgKGpmaWZQcm9wZXJ0aWVzKSB7CisgICAgICAg
IENGQm9vbGVhblJlZiBpc1Byb2dDRkJvb2wgPSBzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKGpmaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5SkZJRklz
UHJvZ3Jlc3NpdmUpKTsKKyAgICAgICAgaWYgKGlzUHJvZ0NGQm9vbCkgeworICAgICAgICAgICAg
Ym9vbCBpc1Byb2dyZXNzaXZlID0gQ0ZCb29sZWFuR2V0VmFsdWUoaXNQcm9nQ0ZCb29sKTsKKyAg
ICAgICAgICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS81MTg0NjU1PiAtIEhh
bmcgcmVuZGVyaW5nIHZlcnkgbGFyZ2UgcHJvZ3Jlc3NpdmUgSlBFRy4gRGVjb2RpbmcgcHJvZ3Jl
c3NpdmUKKyAgICAgICAgICAgIC8vIGltYWdlcyBoYW5ncyBmb3IgYSB2ZXJ5IGxvbmcgdGltZSBy
aWdodCBub3cuIFVudGlsIHRoaXMgaXMgZml4ZWQsIGRvbid0IHN1Yi1zYW1wbGUgcHJvZ3Jlc3Np
dmUgaW1hZ2VzLiBUaGlzCisgICAgICAgICAgICAvLyB3aWxsIGNhdXNlIHRoZW0gdG8gZmFpbCBv
dXIgbGFyZ2UgaW1hZ2UgY2hlY2sgYW5kIHRoZXkgd29uJ3QgYmUgZGVjb2RlZC4KKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSB1bmRlcmx5aW5nIGlzc3VlIGlzIGZpeGVkICg8cmRh
cjovL3Byb2JsZW0vNTE5MTQxOD4pCisgICAgICAgICAgICByZXR1cm4gIWlzUHJvZ3Jlc3NpdmU7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW1h
Z2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFmcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgCisgICAgQ0ZTdHJpbmdSZWYgaW1hZ2VUeXBlID0gQ0dJbWFnZVNvdXJjZUdldFR5
cGUobV9uYXRpdmVEZWNvZGVyKTsKKyAgICAKKyAgICAvLyBSZXR1cm4gZmFsc2UgaWYgdGhlcmUg
aXMgbm8gaW1hZ2UgdHlwZSBvciB0aGUgaW1hZ2UgdHlwZSBpcyBKUEVHLCBiZWNhdXNlCisgICAg
Ly8gSlBFRyBkb2VzIG5vdCBzdXBwb3J0IGFscGhhIHRyYW5zcGFyZW5jeS4KKyAgICBpZiAoIWlt
YWdlVHlwZSB8fCBDRkVxdWFsKGltYWdlVHlwZSwgQ0ZTVFIoInB1YmxpYy5qcGVnIikpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gRklYTUU6IENvdWxkIHJldHVybiBmYWxz
ZSBmb3Igb3RoZXIgbm9uLXRyYW5zcGFyZW50IGltYWdlIGZvcm1hdHMuCisgICAgLy8gRklYTUU6
IENvdWxkIG1heWJlIHJldHVybiBmYWxzZSBmb3IgYSBHSUYgRnJhbWUgaWYgd2UgaGF2ZSBlbm91
Z2ggaW5mbyBpbiB0aGUgR0lGIHByb3BlcnRpZXMgZGljdGlvbmFyeQorICAgIC8vIHRvIGRldGVy
bWluZSB3aGV0aGVyIG9yIG5vdCBhIHRyYW5zcGFyZW50IGNvbG9yIHdhcyBkZWZpbmVkLgorICAg
IHJldHVybiB0cnVlOworfQorCit1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdElu
ZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25z
dAoreworICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vi
c2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZS53aWR0aCgpICogZnJhbWVTaXpl
LmhlaWdodCgpICogNDsKK30KKworUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwsIERlY29kZU1vZGUgZGVjb2RlTW9kZSkgY29uc3QKK3sKKyAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0
SW5kZXgobV9uYXRpdmVEZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKHN1YnNhbXBs
aW5nTGV2ZWwsIGRlY29kZU1vZGUpLmdldCgpKSk7CisgICAgICAgIAorI2lmIFBMQVRGT1JNKElP
UykKKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzM3MTE5OD4gLSBDb3JlR3JhcGhpY3MgY2hhbmdl
ZCB0aGUgZGVmYXVsdCBjYWNoaW5nIGJlaGF2aW91ciBpbiBpT1MgNC4wIHRvIGtDR0ltYWdlQ2Fj
aGluZ1RyYW5zaWVudAorICAgIC8vIHdoaWNoIGNhdXNlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Np
b24gZm9yIHVzIHNpbmNlIHRoZSBpbWFnZXMgaGFkIHRvIGJlIHJlc2FtcGxlZC9yZWNyZWF0ZWQg
ZXZlcnkgdGltZSB3ZSBjYWxsZWQKKyAgICAvLyBDR0NvbnRleHREcmF3SW1hZ2UuIFdlIG5vdyB0
ZWxsIENHIHRvIGNhY2hlIHRoZSBkcmF3biBpbWFnZXMuIFNlZSBhbHNvIDxyZGFyOi8vcHJvYmxl
bS8xNDM2Njc1NT4gLQorICAgIC8vIENvcmVHcmFwaGljcyBuZWVkcyB0byB1bi1kZXByZWNhdGUg
a0NHSW1hZ2VDYWNoaW5nVGVtcG9yYXJ5IHNpbmNlIGl0J3Mgc3RpbGwgbm90IHRoZSBkZWZhdWx0
LgorI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25z
IgorI2VuZGlmCisgICAgICAgIENHSW1hZ2VTZXRDYWNoaW5nRmxhZ3MoaW1hZ2UuZ2V0KCksIGtD
R0ltYWdlQ2FjaGluZ1RlbXBvcmFyeSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisgICAg
ICAgIAorICAgIENGU3RyaW5nUmVmIGltYWdlVVRJID0gQ0dJbWFnZVNvdXJjZUdldFR5cGUobV9u
YXRpdmVEZWNvZGVyKTsKKyAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgeGJtVVRJID0gQ0ZT
VFIoInB1YmxpYy54Yml0bWFwLWltYWdlIik7CisKKyAgICBpZiAoIWltYWdlVVRJKQorICAgICAg
ICByZXR1cm4gaW1hZ2U7CisKKyAgICBpZiAoIUNGRXF1YWwoaW1hZ2VVVEksIHhibVVUSSkpCisg
ICAgICAgIHJldHVybiBpbWFnZTsKKworICAgIC8vIElmIGl0IGlzIGFuIHhibSBpbWFnZSwgbWFz
ayBvdXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byByZW5kZXIgdGhlbSB0cmFuc3BhcmVudC4KKyAg
ICBjb25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNbNl0gPSB7MjU1LCAyNTUsICAyNTUsIDI1NSwg
MjU1LCAyNTV9OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYXNrZWRJbWFnZSA9IGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhNYXNraW5nQ29sb3JzKGltYWdlLmdldCgpLCBtYXNraW5nQ29s
b3JzKSk7CisgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKK30K
KyAgICAKK3ZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLy8gT24gTWFj
IHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVu
ZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KKyAgICAvLyBXZSB1
c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRv
IGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVhbGx5
IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0
YShtX25hdGl2ZURlY29kZXIsIGRhdGEtPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVj
ZWl2ZWQpOworI2Vsc2UKKyAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRo
ZSBTaGFyZWRCdWZmZXIuCisgICAgZGF0YS0+cmVmKCk7CisgICAgLy8gV2UgdXNlIHRoZSBHZXRC
eXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9u
ZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgorICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8g
bG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1v
dmUsIHdoaWNoCisgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQ
b2ludGVyIGNhbGxiYWNrLgorICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3Zp
ZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24s
IHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+
IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoZGF0YSwg
ZGF0YS0+c2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBDR0ltYWdlU291cmNlVXBk
YXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2RlciwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxE
YXRhUmVjZWl2ZWQpOworI2VuZGlmCit9CisKK30KKworI2VuZGlmIC8vIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTU2MWFiOWUxNzc5MTcyYmYzZWQyN2ZhMDQwYTBlNDE5MWJhMTY2ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2Rlci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlRGVjb2Rlcl9oCisjZGVmaW5lIEltYWdlRGVjb2Rl
cl9oCisKKyNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VT
b3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CisKK2VudW0gY2xhc3MgRGVjb2RlTW9kZSB7
IEltbWVkaWF0ZSwgTGF6eSB9OworCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIEltYWdl
RGVjb2RlciB7CitwdWJsaWM6CisgICAgSW1hZ2VEZWNvZGVyKCk7CisgICAgdmlydHVhbCB+SW1h
Z2VEZWNvZGVyKCkgeyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJt
aW5lUHJvcGVydGllcygpOworICAgIHN0YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2Ft
cGxpbmdMZXZlbCk7CisKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAg
ICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0OworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0
OworICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7CisgICAgaW50IHJlcGV0aXRpb25Db3Vu
dCgpIGNvbnN0OworICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkgY29uc3Q7
CisKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
KSBjb25zdDsKKyAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
KyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0Owor
CisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBib29s
IGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd1N1YnNh
bXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICB1bnNpZ25lZCBmcmFtZUJ5
dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKworICAgIFBh
c3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwsIERlY29kZU1vZGUgPSBEZWNvZGVNb2RlOjpMYXp5KSBjb25zdDsKKworICAgIHZv
aWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgCitw
cm90ZWN0ZWQ6CisgICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZTsKKyAgICBDR0ltYWdlU291cmNl
UmVmIG1fbmF0aXZlRGVjb2RlcjsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBJbWFnZURlY29k
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHLmNwcAppbmRleCBkNGEwMTJiNmY1N2JmNTM5MzA2NDc3N2I2YzEwOTM2NmIyNGM0
NDVjLi5kY2Y3OWE3MmExNWU5Zjc5NDBmYWRhNmQ2MTk1YjhjZDQzNTQzM2IzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKIAogI2luY2x1
ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogI2luY2x1
ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKQEAgLTQ0LDQ0ICs0NSw5IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8SW1hZ2VJ
Ty9DR0ltYWdlU291cmNlUHJpdmF0ZS5oPgotI2Vsc2UKLWNvbnN0IENGU3RyaW5nUmVmIGtDR0lt
YWdlU291cmNlU3Vic2FtcGxlRmFjdG9yID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU3Vic2FtcGxl
RmFjdG9yIik7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBDRlN0cmlu
Z1JlZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR1VuY2xhbXBlZERlbGF5VGltZSA9IENGU1RS
KCJVbmNsYW1wZWREZWxheVRpbWUiKTsKLWNvbnN0IENGU3RyaW5nUmVmIFdlYkNvcmVDR0ltYWdl
UHJvcGVydHlBUE5HRGVsYXlUaW1lID0gQ0ZTVFIoIkRlbGF5VGltZSIpOwotY29uc3QgQ0ZTdHJp
bmdSZWYgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdMb29wQ291bnQgPSBDRlNUUigiTG9vcENv
dW50Iik7Ci0KLWNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdC
MzIgPSBDRlNUUigia0NHSW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0IzMiIpOwotY29uc3QgQ0ZT
dHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEgPSBDRlNUUigia0NHSW1hZ2VTb3Vy
Y2VTa2lwTWV0YWRhdGEiKTsKLQotI2lmICFQTEFURk9STShDT0NPQSkKLXNpemVfdCBzaGFyZWRC
dWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBw
b3NpdGlvbiwgc2l6ZV90IGNvdW50KQotewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7Ci0gICAgc2l6ZV90IHNvdXJjZVNp
emUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKLSAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6
ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBjaGFyKiBzb3VyY2UgPSBzaGFyZWRC
dWZmZXItPmRhdGEoKSArIHBvc2l0aW9uOwotICAgIHNpemVfdCBhbW91bnQgPSBzdGQ6Om1pbjxz
aXplX3Q+KGNvdW50LCBzb3VyY2VTaXplIC0gcG9zaXRpb24pOwotICAgIG1lbWNweShidWZmZXIs
IHNvdXJjZSwgYW1vdW50KTsKLSAgICByZXR1cm4gYW1vdW50OwotfQotCi12b2lkIHNoYXJlZEJ1
ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKLXsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZl
ciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwotICAgIHNoYXJlZEJ1ZmZlci0+
ZGVyZWYoKTsKLX0KLSNlbmRpZgotCiBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1hZ2VTb3Vy
Y2U6OkFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
Ci0gICAgOiBtX2RlY29kZXIoMCkKIHsKICAgICAvLyBGSVhNRTogQWxwaGFPcHRpb24gYW5kIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGFyZSBpZ25vcmVkLgogfQpAQCAtMTAwLDM1NCArNjYs
MTI5IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1lcywgc2l6
ZV90LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fZGVjb2RlcikgewotICAgICAgICBDRlJlbGVhc2UobV9kZWNvZGVyKTsKKyAgICAgICAgZGVs
ZXRlIG1fZGVjb2RlcjsKICAgICAgICAgbV9kZWNvZGVyID0gMDsKICAgICB9CisgICAgCiAgICAg
aWYgKGRhdGEpCiAgICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KLQot
c3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUltYWdlU291cmNlT3B0aW9u
cyhTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCisgICAgCit2b2lkIEltYWdlU291
cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKLSAgICBp
ZiAoIXN1YnNhbXBsaW5nTGV2ZWwpIHsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgbnVtT3B0aW9u
cyA9IDM7Ci0gICAgICAgIGNvbnN0IHZvaWQqIGtleXNbbnVtT3B0aW9uc10gPSB7IGtDR0ltYWdl
U291cmNlU2hvdWxkQ2FjaGUsIGtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdCMzIsIGtDR0lt
YWdlU291cmNlU2tpcE1ldGFkYXRhIH07Ci0gICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1tudW1P
cHRpb25zXSA9IHsga0NGQm9vbGVhblRydWUsIGtDRkJvb2xlYW5UcnVlLCBrQ0ZCb29sZWFuVHJ1
ZSB9OwotICAgICAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKG51bGxwdHIsIGtleXMsIHZh
bHVlcywgbnVtT3B0aW9ucywgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlw
ZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgfQotCi0gICAgc2hvcnQgY29uc3RyYWlu
ZWRTdWJzYW1wbGluZ0xldmVsID0gc3RkOjptaW48c2hvcnQ+KDMsIHN0ZDo6bWF4PHNob3J0Pigw
LCBzdWJzYW1wbGluZ0xldmVsKSk7Ci0gICAgaW50IHN1YnNhbXBsZUludCA9IDEgPDwgY29uc3Ry
YWluZWRTdWJzYW1wbGluZ0xldmVsOyAvLyBbMC4uM10gPT4gWzEsIDIsIDQsIDhdCi0KLSAgICBS
ZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN1YnNhbXBsZU51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJD
cmVhdGUobnVsbHB0ciwgIGtDRk51bWJlckludFR5cGUsICAmc3Vic2FtcGxlSW50KSk7Ci0gICAg
Y29uc3QgQ0ZJbmRleCBudW1PcHRpb25zID0gNDsKLSAgICBjb25zdCB2b2lkKiBrZXlzW251bU9w
dGlvbnNdID0geyBrQ0dJbWFnZVNvdXJjZVNob3VsZENhY2hlLCBrQ0dJbWFnZVNvdXJjZVNob3Vs
ZFByZWZlclJHQjMyLCBrQ0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSwga0NHSW1hZ2VTb3VyY2VT
dWJzYW1wbGVGYWN0b3IgfTsKLSAgICBjb25zdCB2b2lkKiB2YWx1ZXNbbnVtT3B0aW9uc10gPSB7
IGtDRkJvb2xlYW5UcnVlLCBrQ0ZCb29sZWFuVHJ1ZSwga0NGQm9vbGVhblRydWUsIHN1YnNhbXBs
ZU51bWJlci5nZXQoKSB9OwotICAgIHJldHVybiBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShu
dWxscHRyLCBrZXlzLCB2YWx1ZXMsIG51bU9wdGlvbnMsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBVTlVTRURf
UEFSQU0oZGF0YSk7CisgICAgCisgICAgaWYgKG1fZGVjb2RlcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIG1fZGVjb2RlciA9IG5ldyBJbWFnZURlY29kZXIoKTsKIH0KLQotc3RhdGljIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGltYWdlU291cmNlT3B0aW9ucyhTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSAwKQorICAgIAordm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIGlmIChz
dWJzYW1wbGluZ0xldmVsKQotICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25z
KHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBvcHRp
b25zID0gY3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKDApOwotICAgIHJldHVybiBvcHRpb25zOwot
fQorICAgIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoZGF0YSk7CisgICAgaWYgKCFtX2RlY29kZXIp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9kZWNvZGVyOworICAgIG1fZGVjb2Rlci0+c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQp
OwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCitTdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAg
ICAgICAgbV9kZWNvZGVyID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKDApOwotICAg
IC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNy
ZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuICBX
ZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eQotICAgIC8vIHRvIHdyYXAgaXRzZWxmIGluc2lk
ZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMgcmVh
bGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRl
RGF0YShtX2RlY29kZXIsIGRhdGEtPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2
ZWQpOwotI2Vsc2UKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVyID0gQ0dJ
bWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKDApOwotICAgIC8vIENyZWF0ZSBhIENHRGF0YVBy
b3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLT5yZWYoKTsKLSAgICAv
LyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUg
R2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCi0gICAgLy8gZG9lcyBub3Qg
cHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVl
IHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKLSAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1
c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCi0gICAgQ0dEYXRhUHJvdmlkZXJEaXJl
Y3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdl
dEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxD
R0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNy
ZWF0ZURpcmVjdChkYXRhLCBkYXRhLT5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwotICAg
IENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9kZWNvZGVyLCBkYXRhUHJvdmlkZXIu
Z2V0KCksIGFsbERhdGFSZWNlaXZlZCk7Ci0jZW5kaWYKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQo
KSA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwogfQogCi1TdHJp
bmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKK1N1YnNhbXBsaW5nTGV2
ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vi
c2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIENGU3RyaW5nUmVmIGlt
YWdlU291cmNlVHlwZSA9IENHSW1hZ2VTb3VyY2VHZXRUeXBlKG1fZGVjb2Rlcik7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShpbWFnZVNv
dXJjZVR5cGUpOworICAgIHJldHVybiBJbWFnZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2ZWxGb3JT
Y2FsZShzY2FsZSwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwogfQorICAgIAogCi1TdWJzYW1w
bGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2Nh
bGUpIGNvbnN0CitzaXplX3QgSW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJv
cGVydGllcygpIGNvbnN0CiB7Ci0gICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2
ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCi0gICAgZmxvYXQg
Y2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBzdGQ6Om1pbjxmbG9hdD4oMSwg
c2NhbGUpKTsKLSAgICBpbnQgcmVzdWx0ID0gY2VpbGYobG9nMmYoMSAvIGNsYW1wZWRTY2FsZSkp
OwotICAgIEFTU0VSVChyZXN1bHQgPj0wICYmIHJlc3VsdCA8PSAzKTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJv
cGVydGllcygpOwogfQotCisgICAgCiBib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUo
KQogewotICAgIC8vIFJhZ25hcm9zIHllbGxzOiBUT08gU09PTiEgWW91IGhhdmUgYXdha2VuZWQg
bWUgVE9PIFNPT04sIEV4ZWN1dHVzIQotICAgIGlmIChDR0ltYWdlU291cmNlR2V0U3RhdHVzKG1f
ZGVjb2RlcikgPCBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGUpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGltYWdlMFByb3BlcnRpZXMgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCAwLCBp
bWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwotICAgIGlmICghaW1hZ2UwUHJvcGVydGllcykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIENGRGljdGlvbmFyeUNvbnRhaW5z
S2V5KGltYWdlMFByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbFdpZHRoKQot
ICAgICAgICAmJiBDRkRpY3Rpb25hcnlDb250YWluc0tleShpbWFnZTBQcm9wZXJ0aWVzLmdldCgp
LCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxIZWlnaHQpOworICAgIHJldHVybiBtX2RlY29kZXIgJiYg
bV9kZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKTsKIH0KIAotc3RhdGljIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1hZ2VQcm9wZXJ0
aWVzKQorYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaW1hZ2VQcm9wZXJ0aWVzKTsKLSAgICBD
Rk51bWJlclJlZiBvcmllbnRhdGlvblByb3BlcnR5ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKGltYWdlUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eU9yaWVudGF0aW9uKTsK
LSAgICBpZiAoIW9yaWVudGF0aW9uUHJvcGVydHkpCi0gICAgICAgIHJldHVybiBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbjsKLQotICAgIGludCBleGlmVmFsdWU7Ci0gICAgQ0ZOdW1iZXJHZXRWYWx1
ZShvcmllbnRhdGlvblByb3BlcnR5LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmZXhpZlZhbHVlKTsKLSAg
ICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6ZnJvbUVYSUZWYWx1ZShleGlmVmFsdWUpOworICAg
IHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGluZ09mRnJh
bWVBdEluZGV4KGluZGV4KTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGlu
Z09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QKK0ludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbikgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVz
ID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fZGVjb2Rlciwg
MCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKLSAgICBpZiAoIXByb3BlcnRpZXMpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENGRGljdGlvbmFyeVJlZiBqZmlmUHJvcGVydGll
cyA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJv
cGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUpGSUZEaWN0aW9uYXJ5KSk7Ci0gICAgaWYg
KGpmaWZQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIENGQm9vbGVhblJlZiBpc1Byb2dDRkJvb2wgPSBz
dGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGpmaWZQcm9wZXJ0
aWVzLCBrQ0dJbWFnZVByb3BlcnR5SkZJRklzUHJvZ3Jlc3NpdmUpKTsKLSAgICAgICAgaWYgKGlz
UHJvZ0NGQm9vbCkgewotICAgICAgICAgICAgYm9vbCBpc1Byb2dyZXNzaXZlID0gQ0ZCb29sZWFu
R2V0VmFsdWUoaXNQcm9nQ0ZCb29sKTsKLSAgICAgICAgICAgIC8vIFdvcmthcm91bmQgZm9yIDxy
ZGFyOi8vcHJvYmxlbS81MTg0NjU1PiAtIEhhbmcgcmVuZGVyaW5nIHZlcnkgbGFyZ2UgcHJvZ3Jl
c3NpdmUgSlBFRy4gRGVjb2RpbmcgcHJvZ3Jlc3NpdmUKLSAgICAgICAgICAgIC8vIGltYWdlcyBo
YW5ncyBmb3IgYSB2ZXJ5IGxvbmcgdGltZSByaWdodCBub3cuIFVudGlsIHRoaXMgaXMgZml4ZWQs
IGRvbid0IHN1Yi1zYW1wbGUgcHJvZ3Jlc3NpdmUgaW1hZ2VzLiBUaGlzCi0gICAgICAgICAgICAv
LyB3aWxsIGNhdXNlIHRoZW0gdG8gZmFpbCBvdXIgbGFyZ2UgaW1hZ2UgY2hlY2sgYW5kIHRoZXkg
d29uJ3QgYmUgZGVjb2RlZC4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSB1bmRl
cmx5aW5nIGlzc3VlIGlzIGZpeGVkICg8cmRhcjovL3Byb2JsZW0vNTE5MTQxOD4pCi0gICAgICAg
ICAgICByZXR1cm4gIWlzUHJvZ3Jlc3NpdmU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAotewotICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVy
dGllc0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKHN1YnNhbXBs
aW5nTGV2ZWwpLmdldCgpKSk7Ci0KLSAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgaWYgKCFpbml0
aWFsaXplZCgpKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCi0gICAgaW50IHdpZHRoID0g
MDsKLSAgICBpbnQgaGVpZ2h0ID0gMDsKLSAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJS
ZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0
eVBpeGVsV2lkdGgpOwotICAgIGlmIChudW0pCi0gICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVt
LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmd2lkdGgpOwotICAgIG51bSA9IChDRk51bWJlclJlZilDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxI
ZWlnaHQpOwotICAgIGlmIChudW0pCi0gICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZO
dW1iZXJJbnRUeXBlLCAmaGVpZ2h0KTsKLQotICAgIGlmICgoZGVzY3JpcHRpb24ucmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgJiYgb3JpZW50YXRp
b25Gcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzLmdldCgpKS51c2VzV2lkdGhBc0hlaWdodCgpKQot
ICAgICAgICByZXR1cm4gSW50U2l6ZShoZWlnaHQsIHdpZHRoKTsKKyAgICBJbnRTaXplIHNpemUg
PSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwor
ICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBtX2RlY29kZXItPm9yaWVudGF0aW9u
QXRJbmRleChpbmRleCk7CiAKLSAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAg
ICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNw
b3NlZFNpemUoKSA6IHNpemU7CiB9CiAKIEltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9y
aWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9w
ZXJ0aWVzQXRJbmRleChtX2RlY29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQo
KSkpOwotICAgIGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9y
aWVudGF0aW9uOwotCi0gICAgcmV0dXJuIG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMocHJvcGVy
dGllcy5nZXQoKSk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPm9yaWVu
dGF0aW9uQXRJbmRleChpbmRleCkgOiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKIH0KIAotSW50
U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb24pIGNvbnN0CitJbnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBkZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIGZy
YW1lU2l6ZUF0SW5kZXgoMCwgMCk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNwb3Qo
SW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CitJbnRTaXplIEltYWdlU291cmNlOjpzaXplUmVzcGVj
dGluZ09yaWVudGF0aW9uKCkgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4
KG1fZGVjb2RlciwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKLSAgICBpZiAoIXBy
b3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGludCB4ID0gLTEsIHkgPSAt
MTsKLSAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUocHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RYIikpOwotICAgIGlmICghbnVtIHx8
ICFDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJngpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUocHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RZIikpOwotICAgIGlmICghbnVtIHx8
ICFDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJnkpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoeCA8IDAgfHwgeSA8IDApCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGhvdFNwb3QgPSBJbnRQb2ludCh4LCB5KTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bik7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKCkgY29uc3QKK2Jvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9pbnQmIGhv
dFNwb3QpIGNvbnN0CiB7Ci0gICAgLy8gTWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2MvY2FsbG9j
IGNhbGxzIG9uIE1hYyBPUyAxMC42LjYsIHg4Nl82NC4KLSAgICAvLyBBIG5vbi16ZXJvIHZhbHVl
IGVuc3VyZXMgY2FjaGVkIGltYWdlcyB3aXRoIG5vIGRlY29kZWQgZnJhbWVzIHN0aWxsIGVudGVy
Ci0gICAgLy8gdGhlIGxpdmUgZGVjb2RlZCByZXNvdXJjZXMgbGlzdCB3aGVuIHRoZSBDR0ltYWdl
U291cmNlIGRlY29kZXMgaW1hZ2UKLSAgICAvLyBwcm9wZXJ0aWVzLCBhbGxvd2luZyB0aGUgY2Fj
aGUgdG8gcHJ1bmUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGltYWdlLgotICAgIC8vIFRoaXMgdmFs
dWUgaXMgbGlrZWx5IHRvIGJlIGluYWNjdXJhdGUgb24gb3RoZXIgcGxhdGZvcm1zLCBidXQgdGhl
IG92ZXJhbGwKLSAgICAvLyBiZWhhdmlvciBpcyB1bmNoYW5nZWQuCi0gICAgcmV0dXJuIDEzMDg4
OworICAgIHJldHVybiBtX2RlY29kZXIgJiYgbV9kZWNvZGVyLT5nZXRIb3RTcG90KGhvdFNwb3Qp
OwogfQotICAgIAorCiBpbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCiB7Ci0gICAg
aWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gY0FuaW1hdGlvbkxvb3BPbmNlOwot
Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJ
bWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzKG1fZGVjb2RlciwgaW1hZ2VTb3VyY2VPcHRpb25zKCku
Z2V0KCkpKTsKLSAgICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBjQW5pbWF0aW9u
TG9vcE9uY2U7Ci0KLSAgICBDRkRpY3Rpb25hcnlSZWYgZ2lmUHJvcGVydGllcyA9IChDRkRpY3Rp
b25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQ
cm9wZXJ0eUdJRkRpY3Rpb25hcnkpOwotICAgIGlmIChnaWZQcm9wZXJ0aWVzKSB7Ci0gICAgICAg
IENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShnaWZQ
cm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5R0lGTG9vcENvdW50KTsKLQotICAgICAgICAvLyBO
byBwcm9wZXJ0eSBtZWFucyBsb29wIG9uY2UuCi0gICAgICAgIGlmICghbnVtKQotICAgICAgICAg
ICAgcmV0dXJuIGNBbmltYXRpb25Mb29wT25jZTsKLQotICAgICAgICBpbnQgbG9vcENvdW50Owot
ICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJmxvb3BDb3Vu
dCk7Ci0KLSAgICAgICAgLy8gQSBwcm9wZXJ0eSB3aXRoIHZhbHVlIDAgbWVhbnMgbG9vcCBmb3Jl
dmVyLgotICAgICAgICByZXR1cm4gbG9vcENvdW50ID8gbG9vcENvdW50IDogY0FuaW1hdGlvbkxv
b3BJbmZpbml0ZTsKLSAgICB9Ci0KLSAgICBDRkRpY3Rpb25hcnlSZWYgcG5nUHJvcGVydGllcyA9
IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwg
a0NHSW1hZ2VQcm9wZXJ0eVBOR0RpY3Rpb25hcnkpOwotICAgIGlmIChwbmdQcm9wZXJ0aWVzKSB7
Ci0gICAgICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRW
YWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR0xvb3BDb3VudCk7
Ci0gICAgICAgIGlmICghbnVtKQotICAgICAgICAgICAgcmV0dXJuIGNBbmltYXRpb25Mb29wT25j
ZTsKLQotICAgICAgICBpbnQgbG9vcENvdW50OwotICAgICAgICBDRk51bWJlckdldFZhbHVlKG51
bSwga0NGTnVtYmVySW50VHlwZSwgJmxvb3BDb3VudCk7Ci0gICAgICAgIHJldHVybiBsb29wQ291
bnQgPyBsb29wQ291bnQgOiBjQW5pbWF0aW9uTG9vcEluZmluaXRlOwotICAgIH0KLQotICAgIC8v
IFR1cm5zIG91dCB3ZSdyZSBub3QgYW4gYW5pbWF0ZWQgaW1hZ2UgYWZ0ZXIgYWxsLCBzbyB3ZSBk
b24ndCBhbmltYXRlLgotICAgIHJldHVybiBjQW5pbWF0aW9uTm9uZTsKKyAgICByZXR1cm4gaW5p
dGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0aW9uTG9v
cE9uY2U7CiB9CiAKIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fZGVjb2RlciA/IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2RlY29kZXIpIDog
MDsKKyAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwog
fQogCi1DR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitQYXNzTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIGlmICghaW5pdGlhbGl6ZWQo
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgobV9kZWNvZGVy
LCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKHN1YnNhbXBsaW5nTGV2ZWwpLmdldCgpKSk7Ci0K
LSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzczNzExOTg+IC0gQ29y
ZUdyYXBoaWNzIGNoYW5nZWQgdGhlIGRlZmF1bHQgY2FjaGluZyBiZWhhdmlvdXIgaW4gaU9TIDQu
MCB0byBrQ0dJbWFnZUNhY2hpbmdUcmFuc2llbnQKLSAgICAvLyB3aGljaCBjYXVzZWQgYSBwZXJm
b3JtYW5jZSByZWdyZXNzaW9uIGZvciB1cyBzaW5jZSB0aGUgaW1hZ2VzIGhhZCB0byBiZSByZXNh
bXBsZWQvcmVjcmVhdGVkIGV2ZXJ5IHRpbWUgd2UgY2FsbGVkCi0gICAgLy8gQ0dDb250ZXh0RHJh
d0ltYWdlLiBXZSBub3cgdGVsbCBDRyB0byBjYWNoZSB0aGUgZHJhd24gaW1hZ2VzLiBTZWUgYWxz
byA8cmRhcjovL3Byb2JsZW0vMTQzNjY3NTU+IC0KLSAgICAvLyBDb3JlR3JhcGhpY3MgbmVlZHMg
dG8gdW4tZGVwcmVjYXRlIGtDR0ltYWdlQ2FjaGluZ1RlbXBvcmFyeSBzaW5jZSBpdCdzIHN0aWxs
IG5vdCB0aGUgZGVmYXVsdC4KLSNpZiBDT01QSUxFUihDTEFORykKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNh
dGVkLWRlY2xhcmF0aW9ucyIKLSNlbmRpZgotICAgIENHSW1hZ2VTZXRDYWNoaW5nRmxhZ3MoaW1h
Z2UuZ2V0KCksIGtDR0ltYWdlQ2FjaGluZ1RlbXBvcmFyeSk7Ci0jaWYgQ09NUElMRVIoQ0xBTkcp
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKLSNlbmRpZiAvLyBQTEFURk9S
TShJT1MpCi0KLSAgICBDRlN0cmluZ1JlZiBpbWFnZVVUSSA9IENHSW1hZ2VTb3VyY2VHZXRUeXBl
KG1fZGVjb2Rlcik7Ci0gICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIHhibVVUSSA9IENGU1RS
KCJwdWJsaWMueGJpdG1hcC1pbWFnZSIpOwotCi0gICAgaWYgKCFpbWFnZVVUSSkKLSAgICAgICAg
cmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKLQotICAgIGlmICghQ0ZFcXVhbChpbWFnZVVUSSwgeGJt
VVRJKSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKLSAgICAKLSAgICAvLyBJZiBp
dCBpcyBhbiB4Ym0gaW1hZ2UsIG1hc2sgb3V0IGFsbCB0aGUgd2hpdGUgYXJlYXMgdG8gcmVuZGVy
IHRoZW0gdHJhbnNwYXJlbnQuCi0gICAgY29uc3QgQ0dGbG9hdCBtYXNraW5nQ29sb3JzWzZdID0g
ezI1NSwgMjU1LCAgMjU1LCAyNTUsIDI1NSwgMjU1fTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbWFza2VkSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoTWFza2luZ0NvbG9ycyhp
bWFnZS5nZXQoKSwgbWFza2luZ0NvbG9ycykpOwotICAgIGlmICghbWFza2VkSW1hZ2UpCi0gICAg
ICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7Ci0KLSAgICByZXR1cm4gbWFza2VkSW1hZ2UubGVh
a1JlZigpOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOwogfQogCiBi
b29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsK
ICAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKLSAgICByZXR1cm4gQ0dJbWFnZVNvdXJjZUdldFN0
YXR1c0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCkgPT0ga0NHSW1hZ2VTdGF0dXNDb21wbGV0ZTsK
KyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoaW5kZXgpOwogfQogCiBmbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBmbG9hdCBkdXJhdGlvbiA9IDA7Ci0gICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVz
QXRJbmRleChtX2RlY29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwot
ICAgIGlmIChwcm9wZXJ0aWVzKSB7Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiBnaWZQcm9wZXJ0
aWVzID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdl
dCgpLCBrQ0dJbWFnZVByb3BlcnR5R0lGRGljdGlvbmFyeSk7Ci0gICAgICAgIGlmIChnaWZQcm9w
ZXJ0aWVzKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVm
KUNGRGljdGlvbmFyeUdldFZhbHVlKGdpZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlHSUZV
bmNsYW1wZWREZWxheVRpbWUpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVXNlIHRoZSB1bmNsYW1w
ZWQgZnJhbWUgZGVsYXkgaWYgaXQgZXhpc3RzLgotICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0
VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRW
YWx1ZShnaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5R0lGRGVsYXlUaW1lKSkgewotICAg
ICAgICAgICAgICAgIC8vIEZhbGwgYmFjayB0byB0aGUgY2xhbXBlZCBmcmFtZSBkZWxheSBpZiB0
aGUgdW5jbGFtcGVkIGZyYW1lIGRlbGF5IGRvZXMgbm90IGV4aXN0LgotICAgICAgICAgICAgICAg
IENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBDRkRpY3Rpb25hcnlSZWYgcG5nUHJv
cGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGll
cy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBOR0RpY3Rpb25hcnkpOwotICAgICAgICBpZiAocG5n
UHJvcGVydGllcykgewotICAgICAgICAgICAgaWYgKENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJl
clJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJDb3JlQ0dJbWFnZVBy
b3BlcnR5QVBOR1VuY2xhbXBlZERlbGF5VGltZSkpCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJH
ZXRWYWx1ZShudW0sIGtDRk51bWJlckZsb2F0VHlwZSwgJmR1cmF0aW9uKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRW
YWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR0RlbGF5VGltZSkp
Ci0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckZsb2F0VHlw
ZSwgJmR1cmF0aW9uKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIE1hbnkgYW5ub3lpbmcg
YWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2ts
eSBhcyBwb3NzaWJsZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1
c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5Ci0gICAg
Ly8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBh
bmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRp
b24uCi0gICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQotICAgICAgICByZXR1cm4gMC4xZjsKLSAg
ICByZXR1cm4gZHVyYXRpb247CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
PmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KSA6IDA7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6
OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIW1fZGVjb2Rl
cikKLSAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhNRTogd2h5IGRvZXNuJ3QgdGhpcyByZXR1
cm4gdHJ1ZT8KLQotICAgIGlmICghZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgQ0ZTdHJpbmdSZWYgaW1hZ2VUeXBlID0gQ0dJbWFnZVNv
dXJjZUdldFR5cGUobV9kZWNvZGVyKTsKLQotICAgIC8vIFJldHVybiBmYWxzZSBpZiB0aGVyZSBp
cyBubyBpbWFnZSB0eXBlIG9yIHRoZSBpbWFnZSB0eXBlIGlzIEpQRUcsIGJlY2F1c2UKLSAgICAv
LyBKUEVHIGRvZXMgbm90IHN1cHBvcnQgYWxwaGEgdHJhbnNwYXJlbmN5LgotICAgIGlmICghaW1h
Z2VUeXBlIHx8IENGRXF1YWwoaW1hZ2VUeXBlLCBDRlNUUigicHVibGljLmpwZWciKSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBDb3VsZCByZXR1cm4gZmFsc2UgZm9y
IG90aGVyIG5vbi10cmFuc3BhcmVudCBpbWFnZSBmb3JtYXRzLgotICAgIC8vIEZJWE1FOiBDb3Vs
ZCBtYXliZSByZXR1cm4gZmFsc2UgZm9yIGEgR0lGIEZyYW1lIGlmIHdlIGhhdmUgZW5vdWdoIGlu
Zm8gaW4gdGhlIEdJRiBwcm9wZXJ0aWVzIGRpY3Rpb25hcnkKLSAgICAvLyB0byBkZXRlcm1pbmUg
d2hldGhlciBvciBub3QgYSB0cmFuc3BhcmVudCBjb2xvciB3YXMgZGVmaW5lZC4KLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmZyYW1lSGFz
QWxwaGFBdEluZGV4KGluZGV4KTsKIH0KIAogdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
KSBjb25zdAogewotICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKSk7Ci0gICAgcmV0dXJuIGZyYW1lU2l6ZS53aWR0aCgpICogZnJhbWVT
aXplLmhlaWdodCgpICogNDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+
ZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogMDsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNERWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9H
cmFwaGljc0NvbnRleHQzREVmbC5jcHAKaW5kZXggYmE0MTU5N2FhMTEwMWRiNjI5MDIzZDI3M2Iy
MDBlNzgxZDMzYWFjOS4uNTljYzJjOWJlOGIzZmZlMTExODZhNjg1ZDJlOGNmNTk0YzFkMzkzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNERWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVj
b2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgo
MCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1faW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIC8vIDEuIEZvciB0ZXhJbWFn
ZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0LCBhc3N1bWUgbm8gUHJlbXVsdGlwbHlBbHBo
YSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMgMHhGRiBmb3IgZWFjaCBw
aXhlbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9J
Y29uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1Mu
bW0KaW5kZXggMjE1OTE1ZjI4YTE5MjE3MjM5NmQ0NmYwODZkMjI0OWI4MWQ5ZDc2YS4uZTE4MzNk
MTk4MzBiMTA3NjYzNjY0YjYxMjg0NDU5N2Y4M2ZjMGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotSWNvbjo6SWNvbihDR0ltYWdlUmVmIGltYWdlKQor
SWNvbjo6SWNvbihOYXRpdmVJbWFnZVB0ciBpbWFnZSkKICAgICA6IG1fY2dJbWFnZShpbWFnZSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1h
Yy5tbQppbmRleCBmZjA3MTMxYTYxZmNlZDA0NTg2YjM3MmQ5YmEyMDc5YTk4NzNjMzhiLi5mYTAx
MWFhODgxNjMwMzAwMDk0NDk4ZWJjMGZmY2E5ZmI5YzMwMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC05NSw3ICs5NSw3IEBA
IENGRGF0YVJlZiBCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkKIAogICAgIFZl
Y3RvcjxDR0ltYWdlUmVmPiBpbWFnZXM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bUZyYW1lczsgKytpICkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUF0SW5k
ZXgoaSk7CisgICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkp
LmdldCgpOwogICAgICAgICBpZiAoY2dJbWFnZSkKICAgICAgICAgICAgIGltYWdlcy5hcHBlbmQo
Y2dJbWFnZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDgzNWVjZjNmNGZlZWViOGEwZGZhOGQzNjk3MzEy
OGYzYjgwN2I5MjYuLjQ3MDczYzBlZDY5MGUwNDRmZmIzYTk0ZTU4NmYyNjAyNzlkMWM0YzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hp
bmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsKICAgICBz
aXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZnJhbWVzOyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleChp
KTsKKyAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgp
OwogICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2Up
ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAg
c2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJy
ZW50RnJhbWUgPSBpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDI5YTIwMjNkYjYzYTkxNDM0YzM5NDhlYWE1
NTIzYmI2MWZlODEwNzUuLjk3ZWQwOTc5MzVjNTFmYzIwYTg0NWM5NThlMTU2OThkMjAwMGRiODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNh
aXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDYWlyb1dpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0Zy
YW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQK
IHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
c3VyZmFjZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOwogICAgICAgICBpZiAoIXN1cmZhY2Up
CiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9E
cmFnSW1hZ2VNYWMubW0KaW5kZXggYmJhZTkxZmE4ZTNjMDY2NDQ3YzQ2NGQ2ZTMxMjAwZGUyNDhj
ZTgzZi4uOTFjOTJlOTEyY2MyMTg5MmY2NTllNjdhOTU5NTcxZmJkZDAwMjdiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC05MSw3ICs5MSw3IEBA
IFJldGFpblB0cjxOU0ltYWdlPiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpCiAgICAgaWYgKGlzPEJpdG1hcEltYWdlPigqaW1hZ2Up
KSB7CiAgICAgICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247CiAgICAgICAgIEJpdG1h
cEltYWdlJiBiaXRtYXBJbWFnZSA9IGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpOwotICAg
ICAgICBJbnRTaXplIHNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBiaXRtYXBJbWFnZS5zaXpl
UmVzcGVjdGluZ09yaWVudGF0aW9uKGRlc2NyaXB0aW9uKTsKKyAgICAgICAgSW50U2l6ZSBzaXpl
UmVzcGVjdGluZ09yaWVudGF0aW9uID0gYml0bWFwSW1hZ2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRh
dGlvbigpOwogCiAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogICAgICAgICAgICAgb3JpZW50YXRpb24g
PSBiaXRtYXBJbWFnZS5vcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273990</attachid>
            <date>2016-03-14 10:46:47 -0700</date>
            <delta_ts>2016-03-14 11:14:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160314104635.patch</filename>
            <type>text/plain</type>
            <size>125631</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjOThmYzYxZmI4ZmUx
ZTAxYTY5MWNjNzg0OTM0NmU1YTkwNzI1MC4uYzE4NDI1ZWVjZTM1ZmQzYWMwMGE4ZDMzYzc3ZWM3
MjM5NmMzZDkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzOCBAQAorMjAxNi0wMy0xNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIFJlbmFt
ZSBGcmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGlzIG5vdCBmb3IgcmV2aWV3LiBJdCBpcyBvbmx5IGZvciBFV1MuIEl0IGNvbnRhaW5z
IHRoZSBmaXggb2YKKyAgICAgICAgd2Via2l0IGJ1Z3MgMTU1NDEyLCAxNTU0MjIgYW5kMTU1NDQ0
LiBBIHNlcGFyYXRlIHBhdGNoIHdpbGwgYmUgcG9zdGVkIGZvcgorICAgICAgICByZXZpZXcgb25j
ZSB0aGlzIGNvbWJpbmVkIHBhdGNoIHBhc3NlcyB0aGUgRVdTLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtlOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OmltYWdlU2l6ZUZvclJlbmRlcmVyKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNo
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OnVwZGF0ZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpl
bnN1cmVGcmFtZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJc0Nv
bXBsZXRlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUhh
c0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVPcmll
bnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9y
U29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjptYXlGaWxsV2l0aFNvbGlkQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNvbGlkQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmR1bXApOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpoYXZlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpmcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OkZyYW1lRGF0YSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6On5GcmFtZURhdGEpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnNvbGlkQ29s
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3RhdHVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09y
aWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6aW5pdGlhbGl6ZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjppbml0aWFsaXplZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxp
bmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVEYXRhOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGV0ZXJtaW5lTWluaW11bVN1
YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1h
Z2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJl
Zk9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJh
Y3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0Nh
bnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6aW1hZ2VTb3VyY2VPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Om9yaWVudGF0
aW9uRnJvbVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0
ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlclJlbGVhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjpmcmFtZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
cmVwZXRpdGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Z2V0SG90
U3BvdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6b3JpZW50YXRpb25BdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6On5JbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjplbnN1cmVEZWNv
ZGVySXNDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3Vy
Y2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJh
bWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25B
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlclJlbGVhc2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjppbWFnZVNvdXJjZU9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Okljb246Okljb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
ZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
ZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCisyMDE2LTAzLTEzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgQ3JlYXRl
IGEgQ0cgSW1hZ2VEZWNvZGVyIGNsYXNzIGluc3RlYWQgb2YgZGVmaW5pbmcgaXQgYXMgQ0dJbWFn
ZVNvdXJjZVJlZiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTQyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1vdmUgdGhlIGltYWdlIGRlY29kaW5nIGNvZGUgZnJvbSBJbWFnZVNvdXJjZUNHLmNwcCBv
dXQgdG8gYSBuZXcgY2xhc3MgbmFtZWQKKyAgICAgICAgSW1hZ2VEZWNvZGVyLiBUaGUgcHVycG9z
ZSBvZiB0aGlzIHNwbGl0IGlzIHRvIGhhdmUgdGhlIENHIEltYWdlU291cmNlIHNpbWlsYXIKKyAg
ICAgICAgdG8gdGhlIG5vbmUgQ0cgSW1hZ2VTb3VyY2Ugd2hlcmUgdGhlcmUgaXMgYSBzZXBhcmF0
ZSBjbGFzcyBmb3IgZGVjb2RpbmcuIFRoZQorICAgICAgICBwbGFuIGlzIHRvIG1lcmdlIHRoZSBJ
bWFnZVNvdXJjZS5jcHAgYW5kIEltYWdlU291cmNlQ0cuY3BwIGluIG9uZSBmaWxlIHNvCisgICAg
ICAgIGRlY2lkaW5nIHdoZXRoZXIgdGhlIGRlY29kaW5nIHNob3VsZCBoYXBwZW4gc3luY2hyb25v
dXNseSBvciBhc3luY2hyb25vdXNseQorICAgICAgICBjYW4gaGFwcGVuIGluIG9uZSBwbGFjZSBh
bmQgdGhlIGNhY2hpbmcgb2YgdGhlIGZyYW1lcyBjYW4gYmUgaGFuZGxlZCBieSB0aGUKKyAgICAg
ICAgSW1hZ2VTb3VyY2UgYXMgd2VsbC4KKworICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21h
a2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6aW1hZ2VTaXplRm9yUmVuZGVy
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjp1cGRhdGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVNvdXJjZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRleCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
Ojppbml0aWFsaXplZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1h
Z2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OmltYWdlU291cmNlT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRC
dWZmZXJHZXRCeXRlc0F0UG9zaXRpb24pOworICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVy
UmVsZWFzZSk7CisgICAgICAgIChXZWJDb3JlOjpvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc1NpemVBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmdldEhv
dFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Om9yaWVudGF0aW9uQXRJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVzQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjp+SW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
U291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5zdXJlRGVj
b2RlcklzQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1l
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpnZXRIb3RTcG90KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpyZXBldGl0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZy
YW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9u
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJSZWxlYXNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpJbWFnZVNvdXJjZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6aW1hZ2VTb3VyY2VPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjppbml0aWFsaXplZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jp
dG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRldGVy
bWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKToKKworMjAxNi0wMy0xMyAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIENoYW5nZSBOYXRpdmVJ
bWFnZVB0ciBmb3IgQ0cgdG8gYmUgUmV0YWluUHRyPENHSW1hZ2VSZWY+CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0MTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZpbmcgTmF0aXZlSW1hZ2VQdHIg
YXMgYSByYXcgcG9pbnRlciBtYWtlcyBtYW5hZ2luZyB0aGUgbGlmZSBjeWNsZSBvZgorICAgICAg
ICB0aGUgQ0dJbWFnZVJlZiBoYXJkLiBBIGxvdCBvZiB3b3JrcyB3YXMgZG9uZSB0byBtYWtlIHN1
cmUgdGhlIENHIHBvaW50ZXIKKyAgICAgICAgaXMgbWFpbnRhaW5lZCBjb3JyZWN0bHkuIEl0IHdh
cyBhbHNvIG5vdCBwb3NzaWJsZSB0byBtb3ZlIGEgRnJhbWVEYXRhIHNpbmNlCisgICAgICAgIGNh
bGxpbmcgdGhlIGRlc3RydWN0b3Igd2FzIHJlbGVhc2luZyB0aGUgQ0dJbWFnZVJlZi4KKworICAg
ICAgICBJIGFtIGdvaW5nIHRvIGZvbGxvdyB0aGlzIG5hbWluZyBjb252ZW50aW9uOgorICAgICAg
ICAxLiBBbiBJbWFnZSBvYmplY3QgY2FuIGhhdmUgb25lIG9yIG1vcmUgRnJhbWVEYXRhLiBBIEZy
YW1lRGF0YSBjYW4gYmUgbmFtZWQKKyAgICAgICAgICAgZm9yIHNob3J0bmVzcyBhcyAiZnJhbWUi
LCAibV9mcmFtZXMiLCBldGMuCisgICAgICAgIDIuIEEgRnJhbWVEYXRhIGNhbiBoYXZlIHplcm8g
b3Igb25lIE5hdGl2ZUltYWdlUHRyLiBBIE5hdGl2ZUltYWdlUHRyIGNhbgorICAgICAgICAgICBi
ZSBuYW1lZCBhcyAiaW1hZ2UiLCAibV9pbWFnZSIsIGV0Yy4KKworICAgICAgICAqIGxvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6YWRk
SW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
RGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
Y29uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tG
b3JTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRDR0ltYWdl
UmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZP
ZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4
dHJhY3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRU
b0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6
ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvSWNvbklPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Okljb246Okljb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpn
ZXRUSUZGUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVN
YXRjaGluZ1NvdXJjZVNpemUpOgorCiAyMDE2LTAzLTEyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0Zvcm1zOiBmb2N1c10gZm9jdXMgcmluZ3MgYXJvdW5kIHRl
eHQgZmllbGRzIGRvIG5vdCBmb2xsb3cgY29udG91ciAoYm9yZGVyLXJhZGl1cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggNmRjNThiMjc4ZDhjMGFjMDNlOTcwNDIxZTExZTQyYjk1OWE2ODZkNi4u
ZTg4NzkyMDM2YjdjM2Q2OGUyMzI3NWI4ZWVlOTIzZjA2ZWMyZGIzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMTgsNiArMjIxOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JU09WVFRDdWUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VP
cmllbnRhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKaW5kZXggZTUyMDljYjIwY2YwMzM4N2EyNTI2NDNkZjRlMGIyMTUxNDkyMDRmNy4uN2Iz
NjdhNzNhYzllMTViZDk1Yzg5Yzk3YTM2YTBmMDI1ZjcyODA3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC03MSw2ICs3MSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IGVjZTJjNTMwOTFhNTZjZDkzMzA2ZTViYWJmYTQ4ODY2MzRmMjU5ZjkuLmFkN2M3ZjRjYzI3NjY0
ZTVjZTViNTE4NjhhYzk3NDJhNzhkOTljODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC0xMjMsNiArMTIzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAogICAgIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHAKIAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggZTZjODdiMmQ3ZTk0MWUzNDlh
NjdhYTZjNjgzYWEzNGRjNjBhZGMxZi4uOTQ5ODQ5NTNkMzlhOGI1ZTdlYmIwY2U5YjUyMjIyZjg1
MmMzZjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTk0LDYgKzk0LDcgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRl
eHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDgzNWI5YWEyMjRhYTll
YWFlZTA0NjIzMzk3ZTk5MDE2ZTlmN2VlYmYuLmRhY2RhNTY5MWE2NWM2NjU2MDYzYTRjMDcwNmMx
MGEwZWZiNjIxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC00MDAsNiArNDAwLDcg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRh
dGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0dNYWMubW0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKaW5kZXggMzhhMDI4YzViODkxYmNiMWZkZGUyZGRl
YjJhMzFiZjgxM2Q1MzhjZC4uMjQ4Yzg5YTBiMDU3ZDFlNWQ2ZTQ0MWVlYmM0YzM4ZmY4MjRmMjIx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCkBAIC0zOSw2ICszOSw3IEBA
IGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDMwN2JhMzhm
ZjBmM2E0YzQ3MWI5ZDQyOTE0NjE2MmE5NTllZTc2Ni4uZDEzZTliODM5MGExYmQwYjIxN2M0MjM4
ODQzY2U0YmQ0Y2QwYmUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjI5MSw2ICsyMjkxLDEwIEBACiAJCTUzRUY3NjZDMTY1
MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkExNjUzMEE2MTAw
NENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1l
LmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTU5QkI4NzkxQzk2NDY1ODAwMjQxM0NEIC8q
IEltYWdlRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTlCQjg3NzFDOTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmNwcCAqLzsg
fTsKKwkJNTU5QkI4N0ExQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5QkI4NzgxQzk2NDY1ODAw
MjQxM0NEIC8qIEltYWdlRGVjb2Rlci5oICovOyB9OworCQk1NTlCQjg3RDFDOTZCMkM4MDAyNDEz
Q0QgLyogSW1hZ2VGcmFtZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTU5QkI4N0IxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRh
LmNwcCAqLzsgfTsKKwkJNTU5QkI4N0UxQzk2QjJDOTAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTlCQjg3
QzFDOTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzJBN0YyMTFDNkU1NzE5MDA5QzYxNDkg
LyogU2ltdWxhdGVkQ2xpY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oICov
OyB9OwogCQk1NzJBN0YyMzFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyQTdGMjIxQzZF
NUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCAqLzsgfTsKIAkJNTgwMzcxNjExQTY2
RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU4MDM3MTVGMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5j
cHAgKi87IH07CkBAIC05ODc1LDYgKzk4NzksMTAgQEAKIAkJNTNFRjc2NkExNjUzMEE2MTAwNENC
RTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNldHRpbmdzTWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MEEwQkM3
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
NTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJ
NTU5QkI4NzcxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1NTlCQjg3ODFDOTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTlCQjg3QjFDOTZCMkM4MDAyNDEzQ0QgLyogSW1h
Z2VGcmFtZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1h
Z2VGcmFtZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTlCQjg3QzFD
OTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW1hZ2VGcmFtZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTVENDA4RjcxQTdDNjMxODAwQzc4NDUwIC8qIFNWR0ltYWdlQ2xpZW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdJbWFnZUNsaWVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTcyQTdGMjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENs
aWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVsYXRlZENsaWNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkE3RjIyMUM2RTVBNjYwMDlDNjE0OSAv
KiBTaW11bGF0ZWRDbGljay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaW11bGF0ZWRDbGljay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTgz
Myw2ICsyMTg0MSw4IEBACiAJCQkJMjI5MkIyN0IxMzU2NjY5NDAwQ0YxMUVGIC8qIEltYWdlQnVm
ZmVyRGF0YUNHLmNwcCAqLywKIAkJCQkyMkJEOUY4MDEzNTM2NEZFMDA5QkQxMDIgLyogSW1hZ2VC
dWZmZXJEYXRhQ0cuaCAqLywKIAkJCQlCMjc1MzUzMDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VD
Ry5jcHAgKi8sCisJCQkJNTU5QkI4NzcxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5j
cHAgKi8sCisJCQkJNTU5QkI4NzgxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5oICov
LAogCQkJCUIyNzUzNTMxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZUNHLmNwcCAqLywK
IAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovLAogCQkJ
CTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovLApAQCAt
MjE5OTUsNiArMjIwMDUsOCBAQAogCQkJCTQzRDI1OTc2MTNDODE2RjQwMDYwODU1OSAvKiBJbWFn
ZUJ1ZmZlci5jcHAgKi8sCiAJCQkJQjJBMTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIEltYWdlQnVm
ZmVyLmggKi8sCiAJCQkJMjJCRDlGN0QxMzUzNjI1QzAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0
YS5oICovLAorCQkJCTU1OUJCODdCMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5j
cHAgKi8sCisJCQkJNTU5QkI4N0MxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmgg
Ki8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywK
IAkJCQlBODc0OEQ3NDEyQ0MzRjg5MDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi8s
CiAJCQkJQTg3NDhENjYxMkNDMzc2MzAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywK
QEAgLTI1NDc1LDYgKzI1NDg3LDcgQEAKIAkJCQk5N0JDNkEyNDE1MDVGMDgxMDAxQjc0QUMgLyog
RGF0YWJhc2VBdXRob3JpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTMzNzFBMjE2N0MxMUQ0
MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JD
NkEyNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTU5QkI4N0UxQzk2QjJDOTAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5N0JDNkEyODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDNkEyOTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VEZXRhaWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTA5REI0OTE2OUUyRDZFMDA2MjI1NTcg
LyogRGF0YWJhc2VFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjgxMiw2ICsyNjgyNSw3IEBA
CiAJCQkJRkRBMTVFQ0UxMkIwM0Y2MTAwM0E1ODNBIC8qIEpTU2NyaXB0UHJvY2Vzc29yTm9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOUZBMzdFRkIxMTcyRkRBNjAwQzRDRDU1IC8qIEpTU2NyaXB0
UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUZBMzdFRkQxMTcyRkRBNjAwQzRDRDU1IC8q
IEpTU2NyaXB0UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1OUJCODdBMUM5NjQ2
NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRDA2QUQx
MUM3Nzc1NDgwMEZERkFGMSAvKiBKU1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTlCREE2NEQ4MUI5NzVDRjIwMDlDNDM4NyAvKiBKU1NoYWRvd1Jvb3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNEOURFMTdCMTdBQUM3NUIwMEVBMzg2RCAvKiBKU1NvdXJj
ZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTIwMyw2ICsyOTIxNyw3IEBACiAJCQkJQjI3
NTM1NjYwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
Q0YzMzI0MEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBQkE3NkM5MTFEMjBFNDcwMDRDMjAxQyAvKiBDb2xvckRhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTU5QkI4NzkxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzI5OTM1RDE3QTFERDU4MDBCQ0U4ODAgLyogQ29sb3JJbnB1dFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NzcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9y
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDNFREQ2N0UxQjQ4NURCRjAwNjQwRTc1IC8qIENv
bWJpbmVkRmlsdGVyc0FscGhhYmV0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk1OTgsNiArMjk2
MTMsNyBAQAogCQkJCTg1M0JGNERDMEFCQjZCNTUwMDg2NDdCQiAvKiBET01Ob2RlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJODU1MjZDMzgwQUIwQTE3RTAwMDMwMkVBIC8qIERPTU5vZGVJdGVyYXRv
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QUNBQThFMEE5Qjc1OUMwMDY3MUU5MCAvKiBET01O
b2RlTGlzdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTU1OUJCODdEMUM5NkIyQzgwMDI0MTNDRCAv
KiBJbWFnZUZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTZDOEFFNTBBOTEyNjQ5
MDA1QzY4N0IgLyogRE9NT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y1RDEwQUFG
QjhEOTAwNDAxNEREIC8qIERPTU92ZXJmbG93RXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlF
MTI4NEJENTEwNDRBMDFFMDBFQUVCNTIgLyogRE9NUGFnZVRyYW5zaXRpb25FdmVudC5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
aW5kZXggZjM3ODc1MjFkZGZmZjY4MmJkODhlNjQ3MmNhZjA2MjVlM2YwNDU0NC4uOWExNDc1Nzg4
MzdmY2RlMTMxMGQxYWQxMDYyMmI3YmI3MDY4NGFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgTGF5b3V0U2l6ZSBD
YWNoZWRJbWFnZTo6aW1hZ2VTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciwgZmxvYXQKICAgICBpZiAocmVuZGVyZXIgJiYgaXM8Qml0bWFwSW1hZ2U+KCptX2ltYWdl
KSkgewogICAgICAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNj
cmlwdGlvbihyZW5kZXJlci0+c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgcmVuZGVy
ZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICAgICAgICAgaWYgKG9yaWVudGF0aW9u
RGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbikKLSAgICAgICAgICAgIGltYWdlU2l6ZSA9IExheW91dFNpemUoZG93bmNhc3Q8Qml0
bWFwSW1hZ2U+KCptX2ltYWdlKS5zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKG9yaWVudGF0aW9u
RGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgIGltYWdlU2l6ZSA9IExheW91dFNpemUoZG93bmNh
c3Q8Qml0bWFwSW1hZ2U+KCptX2ltYWdlKS5zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkpOwog
ICAgIH0KICNlbHNlCiAgICAgaWYgKGlzPEJpdG1hcEltYWdlPigqbV9pbWFnZSkgJiYgKHJlbmRl
cmVyICYmIHJlbmRlcmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwCmluZGV4IDk5OTQ2NWVhMzkwNjk3Y2JlMDBmZTZmYTg4MzhjMTM4ZTU0NDdhMTcu
Ljg0NmMwZGM5Mzg0ZTc1ZGJhMDgyMGMyODBmYjY0MWNlOGEwOGYxNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtMjI1LDggKzIyNSw2IEBAIGJv
b2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkSW1hZ2U+
IGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJ
bWFnZS5nZXQoKSwgQ2FjaGVkSW1hZ2U6Ok1hbnVhbGx5Q2FjaGVkLCBzZXNzaW9uSUQpOwogCi0g
ICAgLy8gQWN0dWFsIHJlbGVhc2Ugb2YgdGhlIENHSW1hZ2VSZWYgaXMgZG9uZSBpbiBCaXRtYXBJ
bWFnZS4KLSAgICBDRlJldGFpbihpbWFnZSk7CiAgICAgY2FjaGVkSW1hZ2UtPmFkZENsaWVudCgm
ZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNp
emUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJ
T05JTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKaW5kZXggZmFmMGY4Njk2MmMzZmI2NTc3NzQ1YmZhZjc1YjRjODRkODBjYzA2MC4uNmU0
M2M3NzE0YjBhMDVlY2NjYzYwYzEzYjI1NzgxYjhlYzljYjNiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNDcsOSArNDcsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZU9i
c2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQotICAgICwgbV9taW5pbXVt
U3Vic2FtcGxpbmdMZXZlbCgwKQotICAgICwgbV9pbWFnZU9yaWVudGF0aW9uKE9yaWdpblRvcExl
ZnQpCi0gICAgLCBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKGZhbHNlKQogICAgICwg
bV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25l
KQogICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKQEAgLTY2LDEzICs2Mywx
MCBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAj
ZWxzZQogICAgICwgbV9hbGxvd1N1YnNhbXBsaW5nKGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX2lz
U29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCiAg
ICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQo
ZmFsc2UpCiAgICAgLCBtX2hhdmVTaXplKGZhbHNlKQogICAgICwgbV9zaXplQXZhaWxhYmxlKGZh
bHNlKQotICAgICwgbV9oYXNVbmlmb3JtRnJhbWVTaXplKHRydWUpCiAgICAgLCBtX2hhdmVGcmFt
ZUNvdW50KGZhbHNlKQogICAgICwgbV9hbmltYXRpb25GaW5pc2hlZFdoZW5DYXRjaGluZ1VwKGZh
bHNlKQogewpAQCAtOTYsNyArOTAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzdGFydFRpbWVyKGRv
dWJsZSBkZWxheSkKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAK
LWJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBC
aXRtYXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBp
ZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDQs
NyArOTgsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRl
eCkKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWU7CisgICAgcmV0dXJuIG1f
ZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0CkBAIC0xMjUsNyArMTE5LDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCkKICAgICAgICAgLy8gc2F2ZSB0
aGUgbWVtb3J5IGZvciB0aGUgZnJhbWVidWZmZXIgZGF0YSksIHNvIHdlIGRvbid0IG5lZWQgdG8g
Y2xlYXIKICAgICAgICAgLy8gdGhlIG1ldGFkYXRhLgogICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5
dGVzID0gbV9mcmFtZXNbaV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbaV0u
Y2xlYXIoZmFsc2UpKQorICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoSW1hZ2VGcmFtZUNh
Y2hpbmc6OkNhY2hlTWV0YWRhdGEpKQogICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0g
ZnJhbWVCeXRlczsKICAgICB9CiAKQEAgLTE1OCw4ICsxNTIsNyBAQCB2b2lkIEJpdG1hcEltYWdl
OjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwpCiAKIHZvaWQg
Qml0bWFwSW1hZ2U6OmRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeSh1bnNpZ25lZCBmcmFtZUJ5dGVz
Q2xlYXJlZCwgQ2xlYXJlZFNvdXJjZSBjbGVhcmVkU291cmNlKQogewotICAgIG1faXNTb2xpZENv
bG9yID0gZmFsc2U7Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IGZhbHNlOworICAgIG1f
c29saWRDb2xvclZhbHVlID0gVHJpU3RhdGU6OlVuY2hlY2tlZDsKICAgICBpbnZhbGlkYXRlUGxh
dGZvcm1EYXRhKCk7CiAKICAgICBBU1NFUlQobV9kZWNvZGVkU2l6ZSA+PSBmcmFtZUJ5dGVzQ2xl
YXJlZCk7CkBAIC0xODMsMTEgKzE3Niw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAg
aWYgKG1fZnJhbWVzLnNpemUoKSA8IG51bUZyYW1lcykKICAgICAgICAgbV9mcmFtZXMuZ3Jvdyhu
dW1GcmFtZXMpOwogCi0gICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJh
bWUpIHsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUgPSBtX3NvdXJjZS5jcmVhdGVG
cmFtZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIGlmIChmcmFtZUNhY2hp
bmcgPT0gSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGFBbmRGcmFtZSkgeworICAgICAg
ICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1f
c3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgICAgIGlmIChudW1GcmFt
ZXMgPT0gMSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAgICAgICAgICAgIGNoZWNrRm9y
U29saWRDb2xvcigpOwogICAgIH0KIAogICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0aW9u
ID0gbV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKQEAgLTIwMCwxMSArMTkxLDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBo
YSA9IG1fc291cmNlLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKICAgICBtX2ZyYW1lc1tp
bmRleF0ubV9mcmFtZUJ5dGVzID0gbV9zb3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwogCi0gICAgY29uc3QgSW50U2l6ZSBmcmFtZVNpemUoaW5kZXggPyBt
X3NvdXJjZS5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG1fc2l6
ZSk7Ci0gICAgaWYgKCFzdWJzYW1wbGluZ0xldmVsICYmIGZyYW1lU2l6ZSAhPSBtX3NpemUpCi0g
ICAgICAgIG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA9IGZhbHNlOwotCi0gICAgaWYgKG1fZnJhbWVz
W2luZGV4XS5tX2ZyYW1lKSB7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKSB7CiAg
ICAgICAgIGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0ubV9m
cmFtZUJ5dGVzKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAg
ICAvLyBUaGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBk
ZWNvZGVkIGRhdGEgdXNlZApAQCAtMjM2LDE2ICsyMjMsMTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
ZGlkRGVjb2RlUHJvcGVydGllcygpIGNvbnN0CiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVj
b2RlZFNpemVDaGFuZ2VkKHRoaXMsIGRlbHRhQnl0ZXMpOwogfQogCi12b2lkIEJpdG1hcEltYWdl
Ojp1cGRhdGVTaXplKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikgY29u
c3QKK3ZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZVNpemUoKSBjb25zdAogewogICAgIGlmICghbV9z
aXplQXZhaWxhYmxlIHx8IG1faGF2ZVNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2l6
ZSA9IG1fc291cmNlLnNpemUoZGVzY3JpcHRpb24pOwotICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmll
bnRhdGlvbiA9IG1fc291cmNlLnNpemUoSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uLCBkZXNjcmlwdGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpKTsKLQot
ICAgIG1faW1hZ2VPcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlv
bi5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIG1fc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRp
b24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50
YXRpb24oKSk7CisgICAgbV9zaXplID0gbV9zb3VyY2Uuc2l6ZSgpOworICAgIG1fc2l6ZVJlc3Bl
Y3RpbmdPcmllbnRhdGlvbiA9IG1fc291cmNlLnNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKTsK
IAogICAgIG1faGF2ZVNpemUgPSB0cnVlOwogCkBAIC0yNTksOSArMjQzLDkgQEAgRmxvYXRTaXpl
IEJpdG1hcEltYWdlOjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9zaXplOwogfQogCi1JbnRT
aXplIEJpdG1hcEltYWdlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikgY29uc3QKK0ludFNpemUgQml0bWFwSW1hZ2U6OnNp
emVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdAogewotICAgIHVwZGF0ZVNpemUoZGVzY3Jp
cHRpb24pOworICAgIHVwZGF0ZVNpemUoKTsKICAgICByZXR1cm4gbV9zaXplUmVzcGVjdGluZ09y
aWVudGF0aW9uOwogfQogCkBAIC0zMDEsNyArMjg1LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZGF0
YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIGNsZWFyZWQtb24tYS1w
cmV2aW91cy1wYXNzKSBmcmFtZXMhCiAgICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2Zy
YW1lc1tpXS5tX2ZyYW1lQnl0ZXM7CiAgICAgICAgIGlmIChtX2ZyYW1lc1tpXS5tX2hhdmVNZXRh
ZGF0YSAmJiAhbV9mcmFtZXNbaV0ubV9pc0NvbXBsZXRlKQotICAgICAgICAgICAgZnJhbWVCeXRl
c0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNsZWFyKHRydWUpID8gZnJhbWVCeXRlcyA6IDApOwor
ICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNsZWFyKEltYWdl
RnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpID8gZnJhbWVCeXRlcyA6IDApOwogICAgIH0KICAgICBk
ZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3VyY2U6
Ok5vKTsKICNlbHNlCkBAIC0zNDAsNyArMzI0LDYgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZGF0YUNo
YW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAjZW5kaWYKIAogICAgIG1faGF2ZUZyYW1lQ291
bnQgPSBmYWxzZTsKLSAgICBtX2hhc1VuaWZvcm1GcmFtZVNpemUgPSB0cnVlOwogICAgIHJldHVy
biBpc1NpemVBdmFpbGFibGUoKTsKIH0KIApAQCAtMzc5LDI2ICszNjIsMjYgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNo
aW5nIGZyYW1lQ2FjaGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluZGV4ID49
IG1fZnJhbWVzLnNpemUoKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRh
dGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpCi0gICAgICAgIHx8IChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2hhdmVN
ZXRhZGF0YSkpCisgICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gSW1hZ2VGcmFtZUNhY2hpbmc6
OkNhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCisgICAg
ICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGEg
JiYgIW1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkpCiAgICAgICAgIGNhY2hlRnJhbWUo
aW5kZXgsIDAsIGZyYW1lQ2FjaGluZyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc05h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9h
dCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCitQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6
OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVI
aW50KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0gc3RkOjpt
aW4obV9zb3VyY2Uuc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKHByZXNlbnRhdGlvblNjYWxlSGlu
dCksIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwpOworICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCA9IG1fc291cmNlLnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShwcmVzZW50
YXRpb25TY2FsZUhpbnQsIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwogCiAgICAgLy8gV2Ug
bWF5IGhhdmUgY2FjaGVkIGEgZnJhbWUgd2l0aCBhIGhpZ2hlciBzdWJzYW1wbGluZyBsZXZlbCwg
aW4gd2hpY2ggY2FzZSB3ZSBuZWVkIHRvCiAgICAgLy8gcmUtZGVjb2RlIHdpdGggYSBsb3dlciBs
ZXZlbC4KLSAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhd
Lm1fZnJhbWUgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBs
aW5nTGV2ZWwpIHsKKyAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNb
aW5kZXhdLm1faW1hZ2UgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1
YnNhbXBsaW5nTGV2ZWwpIHsKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2Fj
aGVkLCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24u
CiAgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7
Ci0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5jbGVhcih0cnVlKTsKKyAgICAgICAgbV9mcmFtZXNb
aW5kZXhdLmNsZWFyKEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpOwogICAgICAgICBpbnZh
bGlkYXRlUGxhdGZvcm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6ZUNoYW5n
ZTsKICAgICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKQEAgLTQwNiwxNSArMzg5LDE1IEBAIFBh
c3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwg
ZmxvYXQgcHJlc2VudGF0aW9uU2NhCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRj
aGVkIGEgZnJhbWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgp
IHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBpZiAoaW5kZXgg
Pj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKKyAgICAgICAg
Y2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmc6OkNh
Y2hlTWV0YWRhdGFBbmRGcmFtZSk7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogfQogCiBib29sIEJpdG1h
cEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAo
IWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAo
IWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFk
YXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4
XS5tX2lzQ29tcGxldGU7CkBAIC00MjIsNyArNDA1LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiAKIGZsb2F0IEJpdG1hcEltYWdlOjpm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFt
ZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFt
ZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uOwpA
QCAtNDMwLDEyICs0MTMsMTIgQEAgZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdElu
ZGV4KHNpemVfdCBpbmRleCkKIAogUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJy
ZW50RnJhbWUoKSk7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KGN1cnJlbnRGcmFtZSgp
KTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0
YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZUNh
Y2hpbmc6OkNhY2hlTWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICht
X2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpCkBAIC00NTEsNyArNDM0LDcgQEAgYm9vbCBC
aXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkKIAogSW1hZ2VPcmllbnRh
dGlvbiBCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQog
ewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkp
KQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmc6
OkNhY2hlTWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gRGVmYXVsdEltYWdlT3JpZW50YXRpb247
CiAKICAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQpAQCAtNjc4LDE5ICs2
NjEsNDkgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aW50ZXJuYWxBZHZhbmNlQW5pbWF0aW9uKEFuaW1h
dGlvbkFkdmFuY2VtZW50IGFkdmFuY2VtZW50KQogCiAgICAgcmV0dXJuIGFkdmFuY2VkQW5pbWF0
aW9uOwogfQorICAgIAordm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKK3sK
KyAgICBtX3NvbGlkQ29sb3JWYWx1ZSA9IFRyaVN0YXRlOjpObzsKKyAgICAKKyAgICBpZiAoZnJh
bWVDb3VudCgpID4gMSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmICghaGF2ZUZyYW1l
SW1hZ2VBdEluZGV4KDApKSB7CisgICAgICAgIEludFNpemUgc2l6ZSA9IG1fc291cmNlLmZyYW1l
U2l6ZUF0SW5kZXgoMCwgMCk7CisgICAgICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXpl
LmhlaWdodCgpICE9IDEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBp
ZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoMCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGlmICghbV9mcmFtZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgaWYgKE9wdGlvbmFsPENvbG9yPiBjb2xvciA9IG1fZnJhbWVzWzBdLnNvbGlkQ29sb3IoKSkg
eworICAgICAgICBtX3NvbGlkQ29sb3IgPSBjb2xvci52YWx1ZSgpOworICAgICAgICBtX3NvbGlk
Q29sb3JWYWx1ZSA9IFRyaVN0YXRlOjpZZXM7CisgICAgfQorfQogCi1ib29sIEJpdG1hcEltYWdl
OjptYXlGaWxsV2l0aFNvbGlkQ29sb3IoKQorYm9vbCBCaXRtYXBJbWFnZTo6aXNTb2xpZENvbG9y
KCkKIHsKLSAgICBpZiAoIW1fY2hlY2tlZEZvclNvbGlkQ29sb3IgJiYgZnJhbWVDb3VudCgpID4g
MCkgeworICAgIGlmIChtX3NvbGlkQ29sb3JWYWx1ZSA9PSBUcmlTdGF0ZTo6VW5jaGVja2VkICYm
IGZyYW1lQ291bnQoKSA+IDApIHsKICAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7Ci0gICAg
ICAgIEFTU0VSVChtX2NoZWNrZWRGb3JTb2xpZENvbG9yKTsKKyAgICAgICAgQVNTRVJUKG1fc29s
aWRDb2xvclZhbHVlICE9IFRyaVN0YXRlOjpVbmNoZWNrZWQpOwogICAgIH0KLSAgICByZXR1cm4g
bV9pc1NvbGlkQ29sb3IgJiYgIW1fY3VycmVudEZyYW1lOworICAgIHJldHVybiBtX3NvbGlkQ29s
b3JWYWx1ZSA9PSBUcmlTdGF0ZTo6WWVzOwogfQotCi1Db2xvciBCaXRtYXBJbWFnZTo6c29saWRD
b2xvcigpIGNvbnN0CisgICAgCitib29sIEJpdG1hcEltYWdlOjptYXlGaWxsV2l0aFNvbGlkQ29s
b3IoKQoreworICAgIHJldHVybiBpc1NvbGlkQ29sb3IoKSAmJiAhbV9jdXJyZW50RnJhbWU7Cit9
CisgICAgCitDb2xvciBCaXRtYXBJbWFnZTo6c29saWRDb2xvcigpCiB7Ci0gICAgcmV0dXJuIG1f
c29saWRDb2xvcjsKKyAgICByZXR1cm4gaXNTb2xpZENvbG9yKCkgPyBtX3NvbGlkQ29sb3IgOiBD
b2xvcigpOwogfQogICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpCkBAIC03MTIs
MTEgKzcyNSw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0
CiAgICAgCiAgICAgaWYgKGFsbG93U3Vic2FtcGxpbmcoKSkKICAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJhbGxvdy1zdWJzYW1wbGluZyIsIGFsbG93U3Vic2FtcGxpbmcoKSk7Ci0gICAgaWYgKG1f
aXNTb2xpZENvbG9yKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNvbGlkLWNvbG9yIiwgbV9p
c1NvbGlkQ29sb3IpOwotICAgIAotICAgIGlmIChtX2ltYWdlT3JpZW50YXRpb24gIT0gT3JpZ2lu
VG9wTGVmdCkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvcmllbnRhdGlvbiIsIG1faW1hZ2VP
cmllbnRhdGlvbik7CisgICAgaWYgKG1fc29saWRDb2xvclZhbHVlID09IFRyaVN0YXRlOjpZZXMp
CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic29saWQtY29sb3IiLCBtX3NvbGlkQ29sb3IpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aAppbmRleCA3NDkzYzZhNGJmYjg2M2Q5NzYzN2M0OWM0NjRjYzM3YWU3OGUwYTA0Li5kOTk3ZWRk
NTJlMjYzYjU1ZmMyZDA4MTlhNmM3MzIxNjgyM2I5MjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbWFnZUZyYW1l
RGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVNv
dXJjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKQEAgLTQ3LDYxICs0OCw5IEBAIHR5cGVkZWYg
c3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdURiB7Ci0gICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1lRGF0YT4gOiBwdWJsaWMgU2lt
cGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Jbml0
aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZyYW1lRGF0YSBtZW1iZXJzIGlu
aXRpYWxpemUgdG8gMC4KLSAgICB9OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFRpbWVyOwogCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS8vIEZyYW1lRGF0YSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0KLXN0cnVjdCBGcmFtZURhdGEgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEZyYW1lRGF0YSk7Ci1wdWJsaWM6Ci0gICAgRnJhbWVEYXRhKCkKLSAgICAg
ICAgOiBtX2ZyYW1lKDApCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihEZWZhdWx0SW1hZ2VPcmll
bnRhdGlvbikKLSAgICAgICAgLCBtX3N1YnNhbXBsaW5nTGV2ZWwoMCkKLSAgICAgICAgLCBtX2R1
cmF0aW9uKDApCi0gICAgICAgICwgbV9oYXZlTWV0YWRhdGEoZmFsc2UpCi0gICAgICAgICwgbV9p
c0NvbXBsZXRlKGZhbHNlKQotICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkgCi0gICAgICAgICwg
bV9mcmFtZUJ5dGVzKDApCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsg
Ci0gICAgICAgIGNsZWFyKHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQg
aW1hZ2UgZGF0YSBvbiB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgot
ICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xl
YXIuCi0gICAgYm9vbCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotCi0gICAgTmF0aXZlSW1h
Z2VQdHIgbV9mcmFtZTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247Ci0gICAg
U3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgZmxvYXQgbV9kdXJhdGlv
bjsKLSAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKLSAgICBib29sIG1faXNDb21wbGV0ZSA6
IDE7Ci0gICAgYm9vbCBtX2hhc0FscGhhIDogMTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lQnl0ZXM7
Ci19OwotCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0vLyBCaXRtYXBJbWFnZSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotCiBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1Ymxp
YyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBj
bGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTsKQEAgLTEyNSw3ICs3NCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIEZsb2F0U2l6ZSBkdWUgdG8gb3ZlcnJpZGUuCiAgICAgRmxvYXRTaXplIHNpemUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBJbnRTaXplIHNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24o
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpIGNvbnN0OworICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0
OwogCiAgICAgYm9vbCBnZXRIb3RTcG90KEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKQEAg
LTE4OSw3ICsxMzgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNCaXRtYXBJbWFn
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZvaWQgdXBkYXRlU2l6
ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBkZXRl
cm1pbmVNaW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CkBAIC0y
MTQsMTAgKzE2MywxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzaXplX3QgZnJhbWVDb3VudCgpOwog
Ci0gICAgUGFzc05hdGl2ZUltYWdlUHRyIGZyYW1lQXRJbmRleChzaXplX3QsIGZsb2F0IHByZXNl
bnRhdGlvblNjYWxlSGludCA9IDEpOwotICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2Fs
ZWRGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQgPSAxKTsKKyAgICBQ
YXNzTmF0aXZlSW1hZ2VQdHIgY29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsK
IAotICAgIGJvb2wgaGF2ZUZyYW1lQXRJbmRleChzaXplX3QpOworICAgIGJvb2wgaGF2ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCk7CiAKICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
c2l6ZV90KTsKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwpAQCAtMjI1
LDExICsxNzQsMTAgQEAgcHJvdGVjdGVkOgogICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmll
bnRhdGlvbkF0SW5kZXgoc2l6ZV90KTsKIAogICAgIC8vIERlY29kZXMgYW5kIGNhY2hlcyBhIGZy
YW1lLiBOZXZlciBhY2Nlc3NlZCBleGNlcHQgaW50ZXJuYWxseS4KLSAgICBlbnVtIEltYWdlRnJh
bWVDYWNoaW5nIHsgQ2FjaGVNZXRhZGF0YU9ubHksIENhY2hlTWV0YWRhdGFBbmRGcmFtZSB9Owot
ICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdl
RnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICB2b2lkIGNhY2hlRnJh
bWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IElt
YWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOwogCiAgICAgLy8gQ2FsbGVk
IGJlZm9yZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBpbmZvIHdpdGhvdXQgZGVjb2Rp
bmcuIFJldHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5kcy4KLSAgICBib29sIGVuc3Vy
ZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0
YWRhdGFBbmRGcmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRl
eCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFu
ZEZyYW1lKTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVu
IHxkZXN0cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJh
bWUgYnVmZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAt
MjgwLDggKzIyOCw5IEBAIHByb3RlY3RlZDoKICAgICAvLyBjaGFuZ2VkLgogICAgIHZvaWQgY2hl
Y2tGb3JTb2xpZENvbG9yKCk7CiAKKyAgICBib29sIGlzU29saWRDb2xvcigpOwogICAgIGJvb2wg
bWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgb3ZlcnJpZGU7Ci0gICAgQ29sb3Igc29saWRDb2xvcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIENvbG9yIHNvbGlkQ29sb3IoKSBvdmVycmlkZTsKIAogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIG5vdFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKQEAg
LTI5NywxMyArMjQ2LDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZTsg
Ly8gVGhlIHNpemUgdG8gdXNlIGZvciB0aGUgb3ZlcmFsbCBpbWFnZSAod2lsbCBqdXN0IGJlIHRo
ZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSkuCiAgICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZVJl
c3BlY3RpbmdPcmllbnRhdGlvbjsKIAotICAgIG11dGFibGUgU3Vic2FtcGxpbmdMZXZlbCBtX21p
bmltdW1TdWJzYW1wbGluZ0xldmVsOwotCi0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX2ltYWdlT3Jp
ZW50YXRpb24gOiA0OyAvLyBJbWFnZU9yaWVudGF0aW9uRW51bQotICAgIG11dGFibGUgdW5zaWdu
ZWQgbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA6IDE7IC8vIFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uRW51bQorICAgIG11dGFibGUgU3Vic2FtcGxpbmdMZXZlbCBtX21heGltdW1TdWJz
YW1wbGluZ0xldmVsIHsgMCB9OwogCiAgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lOyAvLyBUaGUg
aW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgotICAgIFZlY3RvcjxGcmFt
ZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0
aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNh
Y2hlLgorICAgIFZlY3RvcjxJbWFnZUZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5
IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZy
YW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGlt
ZXI+IG1fZnJhbWVUaW1lcjsKICAgICBpbnQgbV9yZXBldGl0aW9uQ291bnQ7IC8vIEhvdyBtYW55
IHRvdGFsIGFuaW1hdGlvbiBsb29wcyB3ZSBzaG91bGQgZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0
aW9uTm9uZSBpZiB0aGlzIGltYWdlIHR5cGUgaXMgaW5jYXBhYmxlIG9mIGFuaW1hdGlvbi4KQEAg
LTMzMCwxNiArMjc2LDE1IEBAIHByaXZhdGU6CiAgICAgdWludDE2X3QgbV9wcm9ncmVzc2l2ZUxv
YWRDaHVua0NvdW50OwogI2VuZGlmCiAKKyAgICBlbnVtIGNsYXNzIFRyaVN0YXRlIHsgVW5jaGVj
a2VkLCBObywgWWVzIH07CisgICAgVHJpU3RhdGUgbV9zb2xpZENvbG9yVmFsdWUgeyBUcmlTdGF0
ZTo6VW5jaGVja2VkIH07CisgICAgCiAgICAgYm9vbCBtX2FsbG93U3Vic2FtcGxpbmcgOiAxOyAv
LyBXaGV0aGVyIHdlIHNob3VsZCBhdHRlbXB0IHN1YnNhbXBsaW5nIGlmIHRoaXMgaW1hZ2UgaXMg
dmVyeSBsYXJnZS4KLSAgICBib29sIG1faXNTb2xpZENvbG9yIDogMTsgLy8gV2hldGhlciBvciBu
b3Qgd2UgYXJlIGEgMXgxIHNvbGlkIGltYWdlLgotICAgIGJvb2wgbV9jaGVja2VkRm9yU29saWRD
b2xvciA6IDE7IC8vIFdoZXRoZXIgd2UndmUgY2hlY2tlZCB0aGUgZnJhbWUgZm9yIHNvbGlkIGNv
bG9yLgotCiAgICAgYm9vbCBtX2FuaW1hdGlvbkZpbmlzaGVkIDogMTsgLy8gV2hldGhlciBvciBu
b3Qgd2UndmUgY29tcGxldGVkIHRoZSBlbnRpcmUgYW5pbWF0aW9uLgogCiAgICAgYm9vbCBtX2Fs
bERhdGFSZWNlaXZlZCA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlJ3ZlIHJlY2VpdmVkIGFsbCBv
dXIgZGF0YS4KICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlU2l6ZSA6IDE7IC8vIFdoZXRoZXIgb3Ig
bm90IG91ciB8bV9zaXplfCBtZW1iZXIgdmFyaWFibGUgaGFzIHRoZSBmaW5hbCBvdmVyYWxsIGlt
YWdlIHNpemUgeWV0LgogICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlIDogMTsgLy8gV2hldGhlciBv
ciBub3Qgd2UgY2FuIG9idGFpbiB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UgZnJhbWUgeWV0
IGZyb20gSW1hZ2VJTy4KLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNVbmlmb3JtRnJhbWVTaXplIDog
MTsKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlRnJhbWVDb3VudCA6IDE7CiAgICAgYm9vbCBtX2Fu
aW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAgOiAxOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JY29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JY29uLmgKaW5kZXggZDk1ZTdkZWI4MTBmYzI0ZjdmNjFiMWIyM2E0YjlhZWYz
ZjNjMTdiNy4uMjhjMTM3ZDI5YjExOGE5Y2YxYjYxNjFlZGU0ZGU0OTFkMDQ4ODMwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaApAQCAtNjgsOCArNjgsOCBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIEljb24oQ0dJbWFnZVJlZik7
Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKKyAgICBJY29uKE5hdGl2ZUlt
YWdlUHRyKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2NnSW1hZ2U7CiAjZWxpZiBQTEFURk9STShN
QUMpCiAgICAgSWNvbihOU0ltYWdlKik7CiAgICAgUmV0YWluUHRyPE5TSW1hZ2U+IG1fbnNJbWFn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDQxZmVmMmEy
YjAzMTcwZTNiMDNmZDZjNTJhMmZkZjI4M2U1NjI3NTguLmIxMmMwYzFlZTJmZjgxNDE0NWRhZDBh
MzQ2ZDFjN2E3NzRiNmE3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaApAQCAtMTk0LDcgKzE5NCw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFN1cHBvcnRpbmcg
dGlsZWQgZHJhd2luZwogICAgIHZpcnR1YWwgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgQ29sb3Igc29saWRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIENvbG9yKCk7IH0KKyAgICB2aXJ0dWFsIENvbG9yIHNvbGlkQ29sb3IoKSB7IHJldHVy
biBDb2xvcigpOyB9CiAgICAgCiBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZW5jb2RlZEltYWdlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRnJhbWVEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWY2ODIwODdhMzZmNWRhMjk2YjBk
OGY0YWNhMDNjYjhmNjI3MTg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKKworI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VG
cmFtZURhdGEoKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoSW1hZ2VE
ZWNvZGVyJiBkZWNvZGVyLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorICAgIDogbV9pbWFnZShpbWFn
ZSkKKyAgICAsIG1fc3Vic2FtcGxpbmdMZXZlbChzdWJzYW1wbGluZ0xldmVsKQorICAgICwgbV9o
YXZlTWV0YWRhdGEodHJ1ZSkKK3sKKyNpZiBVU0UoQ0cpCisgICAgbV9vcmllbnRhdGlvbiA9IGRl
Y29kZXIub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKKyAgICBtX2hhc0FscGhhID0gZGVjb2Rl
ci5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisgICAgbV9mcmFtZUJ5dGVzID0gZGVjb2Rl
ci5mcmFtZUJ5dGVzQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgCisgICAg
bV9hbGxvd1N1YnNhbXBsaW5nID0gZGVjb2Rlci5hbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5k
ZXgoaW5kZXgpOworICAgIAorICAgIG1faXNDb21wbGV0ZSA9IGRlY29kZXIuZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleChpbmRleCk7CisgICAgaWYgKGRlY29kZXIucmVwZXRpdGlvbkNvdW50KCkgIT0g
Y0FuaW1hdGlvbk5vbmUpCisgICAgICAgIG1fZHVyYXRpb24gPSBkZWNvZGVyLmZyYW1lRHVyYXRp
b25BdEluZGV4KGluZGV4KTsKKyNlbHNlCisgICAgbV9vcmllbnRhdGlvbiA9IGRlY29kZXIub3Jp
ZW50YXRpb24oKTsKKyAgICBtX2hhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRl
eChpbmRleCk7CisgICAgbV9mcmFtZUJ5dGVzID0gZGVjb2Rlci5mcmFtZUJ5dGVzQXRJbmRleChp
bmRleCk7CisgICAgCisgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gZGVjb2Rlci5mcmFtZUJ1ZmZl
ckF0SW5kZXgoaW5kZXgpOworICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zdGF0dXMoKSAhPSBJ
bWFnZUZyYW1lOjpGcmFtZUVtcHR5KSB7CisgICAgICAgIG1faXNDb21wbGV0ZSA9IGJ1ZmZlci0+
c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKKyAgICAgICAgaWYgKGRlY29k
ZXIucmVwZXRpdGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpIHsKKyAgICAgICAgICAgIC8v
IE1hbnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2Ug
Zmxhc2ggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgIC8vIFdlIGZvbGxvdyBG
aXJlZm94J3MgYmVoYXZpb3IgYW5kIHVzZSBhIGR1cmF0aW9uIG9mIDEwMCBtcyBmb3IgYW55IGZy
YW1lcyB0aGF0IHNwZWNpZnkKKyAgICAgICAgICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMu
IFNlZSA8cmRhcjovL3Byb2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2
MDgyPgorICAgICAgICAgICAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICBt
X2R1cmF0aW9uID0gc3RkOjptYXgoYnVmZmVyLT5kdXJhdGlvbigpIC8gMTAwMC4wZiwgMC4xMDBm
KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorfQorCitJbWFnZUZyYW1lRGF0YTo6fkltYWdl
RnJhbWVEYXRhKCkKK3sKKyAgICBjbGVhcihJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVOb25lKTsK
K30KKworSW1hZ2VGcmFtZVN0YXR1cyBJbWFnZUZyYW1lRGF0YTo6c3RhdHVzKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybiBJbWFnZUZyYW1lU3RhdHVzOjpEZWNv
ZGVOb25lOworICAgIAorICAgIHJldHVybiBtX2lzQ29tcGxldGUgPyBJbWFnZUZyYW1lU3RhdHVz
OjpEZWNvZGVDb21wbGV0ZSA6IEltYWdlRnJhbWVTdGF0dXM6OkRlY29kZVBhcnRpYWw7Cit9Cisg
ICAgCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNGFmZjg2NDIyODg3OWZmZDVmZGQzNTA3M2FkNTg5N2I1NjA2
MzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZURhdGEuaApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW1hZ2VGcmFtZURhdGFfaAorI2RlZmlu
ZSBJbWFnZUZyYW1lRGF0YV9oCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkltYWdl
T3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1h
Z2VQdHIuaCIKKworI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorLy8gU3Vic2FtcGxpbmdMZXZlbC4g
MCBpcyBubyBzdWJzYW1wbGluZywgMSBpcyBoYWxmIGRpbWVuc2lvbnMgb24gZWFjaCBheGlzIGV0
Yy4KK3R5cGVkZWYgc2hvcnQgU3Vic2FtcGxpbmdMZXZlbDsKK3R5cGVkZWYgc2l6ZV90IEltYWdl
RnJhbWVJbmRleDsKKworc3RhdGljIGNvbnN0IEltYWdlRnJhbWVJbmRleCBNYXhJbWFnZUZyYW1l
SW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPEltYWdlRnJhbWVJbmRleD46Om1heCgpOworCitl
bnVtIGNsYXNzIEltYWdlRnJhbWVDYWNoaW5nIHsKKyAgICBDYWNoZU5vbmUsCisgICAgQ2FjaGVN
ZXRhZGF0YSwKKyAgICBDYWNoZUZyYW1lLAorICAgIENhY2hlTWV0YWRhdGFBbmRGcmFtZQorfTsK
KworZW51bSBjbGFzcyBJbWFnZUZyYW1lU3RhdHVzIHsKKyAgICBEZWNvZGVOb25lLAorICAgIERl
Y29kZVBhcnRpYWwsCisgICAgRGVjb2RlQ29tcGxldGUKK307CisKK2NsYXNzIEltYWdlRGVjb2Rl
cjsKKworc3RydWN0IEltYWdlRnJhbWVEYXRhIHsKK3B1YmxpYzoKKyAgICBJbWFnZUZyYW1lRGF0
YSgpOworICAgIEltYWdlRnJhbWVEYXRhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgSW1h
Z2VGcmFtZURhdGEoSW1hZ2VEZWNvZGVyJiwgSW1hZ2VGcmFtZUluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsLCBjb25zdCBOYXRpdmVJbWFnZVB0ciYgPSBudWxscHRyKTsKKyAgICB+SW1hZ2VGcmFtZURh
dGEoKTsKKyAgICAKKyAgICBJbWFnZUZyYW1lU3RhdHVzIHN0YXR1cygpIGNvbnN0OworICAgIAor
ICAgIGJvb2wgY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmcpOworICAgIE9wdGlvbmFsPENvbG9yPiBz
b2xpZENvbG9yKCkgY29uc3Q7CisgICAgCisgICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZSB7IG51
bGxwdHIgfTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0SW1h
Z2VPcmllbnRhdGlvbiB9OworICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVs
IHsgMCB9OworICAgIGZsb2F0IG1fZHVyYXRpb24geyAwIH07CisKKyAgICB1bmlvbiB7CisgICAg
ICAgIHN0cnVjdCB7CisgICAgICAgICAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKKyAgICAg
ICAgICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsKKyAgICAgICAgICAgIGJvb2wgbV9oYXNBbHBo
YSA6IDE7CisgICAgICAgICAgICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyA6IDE7CisgICAgICAg
IH07CisgICAgICAgIHVpbnQ4X3QgbV9mbGFnc1tzaXplb2YoYm9vbCldIHsgMCB9OworICAgIH07
CisgICAgdW5zaWduZWQgbV9mcmFtZUJ5dGVzIHsgMCB9OworICAgIEludFNpemUgbV9zaXplOwor
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEltYWdlRnJhbWVE
YXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAppbmRleCA3NGVmMDUzYTMzM2ZmNWZjNTc4ZTgxODAwY2M2ZmM5NzU1ZWZiYWI4Li4yZmZh
NDBlNDM4NGUwYmI5YWFjNWVhNzc5MmQzZGU2YjEyM2IyNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC02OCwxMSArNjgsNiBA
QCB2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ryb3lBbGwsIHNpemVfdCBjbGVhckJl
Zm9yZUZyYW1lLCBTaGFyZWRCdWZmZXIqCiAgICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJl
Y2VpdmVkKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6aW5pdGlhbGl6ZWQoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2RlY29kZXI7Ci19Ci0KIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hh
cmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICAvLyBNYWtlIHRo
ZSBkZWNvZGVyIGJ5IHNuaWZmaW5nIHRoZSBieXRlcy4KQEAgLTk2LDcgKzkxLDcgQEAgU3RyaW5n
IEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVj
b2RlciA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwogfQogCi1T
dWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxv
YXQpIGNvbnN0CitTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVs
Rm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7
CiB9CkBAIC0xMTEsMjEgKzEwNiwyNSBAQCBib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFi
bGUoKQogICAgIHJldHVybiBtX2RlY29kZXIgJiYgbV9kZWNvZGVyLT5pc1NpemVBdmFpbGFibGUo
KTsKIH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZShJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24pIGNvbnN0CitJbnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBkZXNjcmlwdGlvbik7Cisg
ICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7Cit9CisgICAgCitJbnRTaXplIEltYWdl
U291cmNlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZnJhbWVTaXplQXRJbmRleCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CiB9CiAKLUlu
dFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pIGNvbnN0
CitJbnRTaXplIEltYWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtIHNob3VsZFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKSBjb25zdAogewotICAgIGlmICghbV9kZWNvZGVyKQorICAgIGlmICgh
aW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAogICAgIEludFNpemUg
c2l6ZSA9IG1fZGVjb2Rlci0+ZnJhbWVTaXplQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKChkZXNj
cmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKSAmJiBtX2RlY29kZXItPm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkKLSAg
ICAgICAgcmV0dXJuIEludFNpemUoc2l6ZS5oZWlnaHQoKSwgc2l6ZS53aWR0aCgpKTsKKyAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNvZGVyLT5vcmllbnRhdGlvbigpOwog
Ci0gICAgcmV0dXJuIHNpemU7CisgICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFz
SGVpZ2h0KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOwogfQogCiBib29sIEltYWdl
U291cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdApAQCAtMTQ4LDcgKzE0
Nyw3IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotUGFzc05hdGl2
ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsKQorUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCiB7CiAgICAg
aWYgKCFtX2RlY29kZXIpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggYWNkZDFjZTRjZTMwMGRlODFjOWUw
NjJlZWU3NjA3YmY0NzJhNzBhZi4uY2M3MmZmNDdhNTQxNDQwZDY1MmY2NTBlYTVkNjBmNTEzY2Vj
YjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTQ2LDE4ICs0Niw5IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIAotI2lmIFVTRShDRykKLXR5cGVkZWYgQ0dJbWFnZVNvdXJjZVJl
ZiBOYXRpdmVJbWFnZURlY29kZXJQdHI7Ci0jZWxzZQogY2xhc3MgSW1hZ2VEZWNvZGVyOwogdHlw
ZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2ZUltYWdlRGVjb2RlclB0cjsKLSNlbmRpZgotCi0jaWYg
VVNFKENHKQotI2RlZmluZSBOYXRpdmVJbWFnZURlY29kZXIgSW1hZ2VEZWNvZGVyCi0jZWxzZQog
dHlwZWRlZiBJbWFnZURlY29kZXIgTmF0aXZlSW1hZ2VEZWNvZGVyOwotI2VuZGlmCiAKIC8vIFJp
Z2h0IG5vdyBHSUZzIGFyZSB0aGUgb25seSByZWNvZ25pemVkIGltYWdlIGZvcm1hdCB0aGF0IHN1
cHBvcnRzIGFuaW1hdGlvbi4KIC8vIFRoZSBhbmltYXRpb24gc3lzdGVtIGFuZCB0aGUgY29uc3Rh
bnRzIGJlbG93IGFyZSBkZXNpZ25lZCB3aXRoIHRoaXMgaW4gbWluZC4KQEAgLTExMCw3ICsxMDEs
NyBAQCBwdWJsaWM6CiAgICAgLy8gZGVjb2RlZCBmcmFtZXMuCiAgICAgLy8KICAgICAvLyBDYWxs
ZXJzIHNob3VsZCBub3QgY2FsbCBjbGVhcihmYWxzZSwgbikgYW5kIHN1YnNlcXVlbnRseSBjYWxs
Ci0gICAgLy8gY3JlYXRlRnJhbWVBdEluZGV4KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZp
cnN0IGNhbGwgY2xlYXIodHJ1ZSkuCisgICAgLy8gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobSkg
d2l0aCBtIDwgbiwgdW5sZXNzIHRoZXkgZmlyc3QgY2FsbCBjbGVhcih0cnVlKS4KICAgICAvLyBU
aGlzIGVuc3VyZXMgdGhhdCBzdGF0ZWZ1bCBJbWFnZVNvdXJjZXMvZGVjb2RlcnMgd2lsbCB3b3Jr
IHByb3Blcmx5LgogICAgIC8vCiAgICAgLy8gVGhlIHxkYXRhfCBhbmQgfGFsbERhdGFSZWNlaXZl
ZHwgcGFyYW1ldGVycyBzaG91bGQgYmUgc3VwcGxpZWQgYnkgY2FsbGVycwpAQCAtMTIyLDE5ICsx
MTMsMjAgQEAgcHVibGljOgogICAgICAgICAgICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gTlVM
TCwKICAgICAgICAgICAgICAgIGJvb2wgYWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOwogCi0gICAg
Ym9vbCBpbml0aWFsaXplZCgpIGNvbnN0OworICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7
IHJldHVybiBtX2RlY29kZXI7IH0KIAogICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24o
KSBjb25zdDsKIAotICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxl
KGZsb2F0KSBjb25zdDsKKyAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JT
Y2FsZShmbG9hdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd1N1YnNh
bXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKIAogICAgIGJvb2wgaXNTaXplQXZh
aWxhYmxlKCk7CiAgICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhvdXQgc3Vic2FtcGxp
bmcuCi0gICAgSW50U2l6ZSBzaXplKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKSBjb25zdDsKKyAgICBJbnRTaXplIHNpemUoKSBjb25z
dDsKKyAgICBJbnRTaXplIHNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdDsKICAgICAv
LyBTaXplIG9mIG9wdGlvbmFsbHkgc3Vic2FtcGxlZCBmcmFtZS4KLSAgICBJbnRTaXplIGZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uID0gSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpIGNvbnN0OworICAg
IEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KSBjb25zdDsKIAogICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OwogCkBAIC0x
NDYsNyArMTM4LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwg
dGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBz
ZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIFBhc3NO
YXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSAwKTsKIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAg
ICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0
aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCkBAIC0xNjMsNyArMTU1LDkgQEAgcHVi
bGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgTmF0aXZlSW1hZ2VEZWNvZGVyUHRyIG1fZGVj
b2RlcjsKKyAgICB2b2lkIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKik7CisK
KyAgICBOYXRpdmVJbWFnZURlY29kZXJQdHIgbV9kZWNvZGVyIHsgbnVsbHB0ciB9OwogCiAjaWYg
IVVTRShDRykKICAgICBBbHBoYU9wdGlvbiBtX2FscGhhT3B0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgKaW5kZXggZGY5NDFhNTY2
YTllNDY5Mjc3MjdiYTFlYzY4NDhmMjE2ODAzYTQ1Yi4uZWNhMWI5MmM0MWVlMTgyOGUzMTBkNWJl
ZGJiMmI1YWNhNTk1ZjU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2VQdHIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZVB0ci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjZGVmaW5lIE5hdGl2ZUlt
YWdlUHRyX2gKIAogI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiB0eXBl
ZGVmIHN0cnVjdCBDR0ltYWdlKiBDR0ltYWdlUmVmOwogI2VsaWYgVVNFKENBSVJPKQogI2luY2x1
ZGUgIlJlZlB0ckNhaXJvLmgiCkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIEZJWE1FOiBOYXRpdmVJbWFnZVB0ciBhbmQgUGFzc05hdGl2ZUltYWdlUHRyIHNob3VsZCBi
ZSBzbWFydAogLy8gcG9pbnRlcnMgKHNlZSBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSkuCiAjaWYgVVNFKENHKQotdHlwZWRlZiBDR0ltYWdlUmVmIE5hdGl2ZUltYWdlUHRy
OwordHlwZWRlZiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTmF0aXZlSW1hZ2VQdHI7CiAjZWxpZiBV
U0UoQ0FJUk8pCiB0eXBlZGVmIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IE5hdGl2ZUltYWdlUHRy
OwogdHlwZWRlZiBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gUGFzc05hdGl2ZUltYWdlUHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKaW5kZXggNjNkY2YwYTI1M2UyMzQwZjY3ZjFjODFkODVmYzI3MGRkMjMw
ZTg2ZC4uYTRjNjViZGZmMzJhOTJmOWMxZGYyNmQ0YmY1MzA4MGYwNWFiOTYxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuY3BwCkBAIC0xMDM3LDcgKzEwMzcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29u
dGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7
Ci0gICAgICAgIENHSW1hZ2VSZWYgbmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBuZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpLmdldCgpOwogICAgICAgICBpZiAoIW5ld0ltYWdlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCmluZGV4IGNkNTdlZTQ4NWVh
ODBjNmNmMzQ3YWIzYmQ5NzM3ZDU5OTllMTAyODIuLjEzZDQzOTY4MjU1YTE4MGQ5NmRiYmE0MDhm
YzgyNzljMGYwMzFmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCkBAIC00MCwxNiArNDAsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1Jl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKICAgICA6IEltYWdlKG9ic2VydmVyKQotICAgICwgbV9zaXplKGNhaXJvU3VyZmFjZVNpemUo
bmF0aXZlSW1hZ2UuZ2V0KCkpKQotICAgICwgbV9taW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgwKQog
ICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRp
b25Ob25lKQogICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKICAgICAsIG1f
cmVwZXRpdGlvbnNDb21wbGV0ZSgwKQotICAgICwgbV9kZWNvZGVkU2l6ZShtX3NpemUud2lkdGgo
KSAqIG1fc2l6ZS5oZWlnaHQoKSAqIDQpCiAgICAgLCBtX2ZyYW1lQ291bnQoMSkKLSAgICAsIG1f
aXNTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkK
ICAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQodHJ1ZSkKICAgICAsIG1fYWxsRGF0YVJlY2VpdmVk
KHRydWUpCiAgICAgLCBtX2hhdmVTaXplKHRydWUpCkBAIC01NywxMSArNTIsOSBAQCBCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdl
LCBJbWFnZU9ic2VydmVyKgogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQogewogICAgIG1f
ZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJvX3N1cmZh
Y2VfZ2V0X2NvbnRlbnQobmF0aXZlSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7
Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IG5hdGl2ZUltYWdlOwotICAgIG1fZnJhbWVzWzBd
Lm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLQotICAgIGNoZWNrRm9yU29saWRDb2xvcigpOworICAg
IG1fZnJhbWVzWzBdID0gSW1hZ2VGcmFtZURhdGEobmF0aXZlSW1hZ2UpOworICAgIG1fc2l6ZSA9
IG1fZnJhbWVzWzBdLm1fc2l6ZTsKKyAgICBtX2RlY29kZWRTaXplID0gbV9zaXplLndpZHRoKCkg
KiBtX3NpemUuaGVpZ2h0KCkgKiA0OwogfQogCiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKQEAgLTcyLDcgKzY1LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0LCBjb25zdCBGbG8KIAogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAKLSAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ug
d29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIApAQCAtMTI0LDQ3ICsx
MTcsNTEgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGV0
ZXJtaW5lTWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdAogewotICAgIG1fbWluaW11bVN1
YnNhbXBsaW5nTGV2ZWwgPSAwOworICAgIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgPSAwOwog
fQogCi12b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQorSW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKKyAgICA6IG1f
aW1hZ2UoaW1hZ2UpCisgICAgLCBtX2hhdmVNZXRhZGF0YSh0cnVlKQorICAgICwgbV9pc0NvbXBs
ZXRlKHRydWUpCiB7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICBtX2NoZWNrZWRG
b3JTb2xpZENvbG9yID0gdHJ1ZTsKLQotICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gZnJhbWVB
dEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9v
IGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNlLmdldCgpKSAhPSBDQUlST19TVVJG
QUNFX1RZUEVfSU1BR0UpCi0gICAgICAgIHJldHVybjsKLQotICAgIEludFNpemUgc2l6ZSA9IGNh
aXJvU3VyZmFjZVNpemUoc3VyZmFjZS5nZXQoKSk7Ci0KLSAgICBpZiAoc2l6ZS53aWR0aCgpICE9
IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25l
ZCogcGl4ZWxDb2xvciA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlLmdldCgpKSk7Ci0gICAgbV9zb2xpZENvbG9yID0g
Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29sb3IpOwotCi0gICAgbV9pc1NvbGlk
Q29sb3IgPSB0cnVlOworICAgIEFTU0VSVChtX2ltYWdlKTsKKyAgICBtX3NpemUgPSBjYWlyb1N1
cmZhY2VTaXplKG1faW1hZ2UuZ2V0KCkpOworICAgIG1fZnJhbWVCeXRlcyA9IG1fc2l6ZS53aWR0
aCgpICogbV9zaXplLmhlaWdodCgpICogNDsKKyAgICBtX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFj
ZV9nZXRfY29udGVudChtX2ltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwogfQog
Ci1ib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQorCitib29sIEltYWdl
RnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiB7CiAgICAgaWYgKGNsZWFyTWV0
YWRhdGEpCiAgICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7CiAKLSAgICBpZiAobV9mcmFt
ZSkgewotICAgICAgICBtX2ZyYW1lID0gbnVsbHB0cjsKKyAgICBpZiAobV9pbWFnZSkgeworICAg
ICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorT3B0aW9uYWw8Q29sb3I+IEltYWdlRnJhbWVEYXRhOjpzb2xp
ZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgIAorICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1faW1hZ2UuZ2V0KCkp
ICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisK
KyAgICBJbnRTaXplIHNpemUgPSBjYWlyb1N1cmZhY2VTaXplKG1faW1hZ2UuZ2V0KCkpOworCisg
ICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKKyAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisKKyAgICB1bnNpZ25lZCogcGl4ZWxDb2xvciA9IHJlaW50ZXJwcmV0
X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX2ltYWdl
LmdldCgpKSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbENv
bG9yKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ0FJ
Uk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGNjNzA0NjE0N2FlODFm
MWZhZGFhNmQ4NDE2MjQ5ODBjNmZkZmNiZjEuLjhjNDE4NmQ3MWU1M2ExOTA3ZTkyZDczYTJiMDE2
NDdmZmQ2NmIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0yMTUs
NyArMjE1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJh
Y3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgZGVjb2Rlci5zZXRE
YXRhKG1faW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNv
dW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZy
YW1lQXRJbmRleCgwKTsKKyAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBkZWNvZGVyLmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faW1hZ2VTdXJmYWNl
ID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgLy8gMS4g
Rm9yIHRleEltYWdlMkQgd2l0aCBIVE1MVmlkZW9FbG1lbnQgaW5wdXQsIGFzc3VtZSBubyBQcmVt
dWx0aXBseUFscGhhIGhhZCBiZWVuIGFwcGxpZWQgYW5kIHRoZSBhbHBoYSB2YWx1ZSBpcyAweEZG
IGZvciBlYWNoIHBpeGVsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRleCAwMWI3ZDY5MmNkYmQ3YWI0ZDIyYmJjMTM5
OWMxMDMyOGY1N2U1ZTQ3Li41YWMzMzZkMmFmYzI2ZmIxMjQzMTlmZGY2NDY1ZjUyYzVjZDgxNGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJ
bWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRt
YXBJbWFnZUNHLmNwcApAQCAtNDksMzEgKzQ5LDYzIEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdl
YkNvcmUgeworICAgIAorSW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSkKKyAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2hhdmVNZXRh
ZGF0YSh0cnVlKQorICAgICwgbV9pc0NvbXBsZXRlKHRydWUpCisgICAgLCBtX2hhc0FscGhhKHRy
dWUpCit7CisgICAgQVNTRVJUKG1faW1hZ2UpOworICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdl
R2V0V2lkdGgobV9pbWFnZS5nZXQoKSk7CisgICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0
SGVpZ2h0KG1faW1hZ2UuZ2V0KCkpOworICAgIG1fZnJhbWVCeXRlcyA9IHdpZHRoICogaGVpZ2h0
ICogNDsKKyAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOworfQogCi1ib29sIEZy
YW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQorYm9vbCBJbWFnZUZyYW1lRGF0YTo6
Y2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQogewotICAgIGlmIChjbGVhck1l
dGFkYXRhKQorICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hl
Tm9uZSkKICAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKIAogICAgIG1fb3JpZW50YXRp
b24gPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKICAgICBtX3N1YnNhbXBsaW5nTGV2ZWwgPSAw
OwogCi0gICAgaWYgKG1fZnJhbWUpIHsKKyAgICBpZiAobV9pbWFnZSkgewogI2lmIENBQ0hFX1NV
QklNQUdFUwotICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ZyYW1lKTsKKyAg
ICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7CiAjZW5kaWYK
LSAgICAgICAgQ0dJbWFnZVJlbGVhc2UobV9mcmFtZSk7Ci0gICAgICAgIG1fZnJhbWUgPSAwOwor
ICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKIH0KKyAgICAKK09wdGlvbmFsPENvbG9yPiBJbWFnZUZyYW1lRGF0
YTo6c29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICAKKyAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBjaGVjayBmb3Igc29s
aWQgY29sb3IgaW4gdGhlIGltcG9ydGFudCBzcGVjaWFsIGNhc2Ugb2YgYSAxeDEgaW1hZ2UuCisg
ICAgaWYgKENHSW1hZ2VHZXRXaWR0aChtX2ltYWdlLmdldCgpKSAhPSAxIHx8IENHSW1hZ2VHZXRI
ZWlnaHQobV9pbWFnZS5nZXQoKSkgIT0gMSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
CisgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQorICAgIFJldGFpblB0cjxDR0Nv
bnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShw
aXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAg
ICBpZiAoIWJpdG1hcENvbnRleHQpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIAorICAg
IEdyYXBoaWNzQ29udGV4dChiaXRtYXBDb250ZXh0LmdldCgpKS5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlQ29weSk7CisgICAgQ0dSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IENHUmVjdE1h
a2UoMCwgMCwgMSwgMSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0
KCksIGRlc3RpbmF0aW9uUmVjdCwgbV9pbWFnZS5nZXQoKSk7CisgICAgaWYgKCFwaXhlbFszXSkK
KyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOworICAgIAorICAgIHJldHVybiBDb2xv
cihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Cit9CiAKLUJpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQor
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQotICAgICwgbV9taW5pbXVtU3Vi
c2FtcGxpbmdMZXZlbCgwKQotICAgICwgbV9pbWFnZU9yaWVudGF0aW9uKE9yaWdpblRvcExlZnQp
Ci0gICAgLCBtX3Nob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKGZhbHNlKQogICAgICwgbV9j
dXJyZW50RnJhbWUoMCkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQog
ICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKQEAgLTgxLDE2ICsxMTMsMTQg
QEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX2RlY29kZWRTaXplKDApCiAgICAgLCBtX2RlY29kZWRQ
cm9wZXJ0aWVzU2l6ZSgwKQogICAgICwgbV9mcmFtZUNvdW50KDEpCi0gICAgLCBtX2lzU29saWRD
b2xvcihmYWxzZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCiAgICAgLCBt
X2FuaW1hdGlvbkZpbmlzaGVkKHRydWUpCiAgICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQog
ICAgICwgbV9oYXZlU2l6ZSh0cnVlKQogICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCiAgICAg
LCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiB7Ci0gICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VH
ZXRXaWR0aChjZ0ltYWdlKTsKLSAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQo
Y2dJbWFnZSk7CisgICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQo
KSk7CisgICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsK
ICAgICBtX2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0OwogICAgIG1fc2l6ZSA9IElu
dFNpemUod2lkdGgsIGhlaWdodCk7CiAKQEAgLTk5LDExICsxMjksNyBAQCBCaXRtYXBJbWFnZTo6
Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
ICAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemU7CiAKICAgICBtX2ZyYW1l
cy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1fZnJhbWUgPSBDR0ltYWdlUmV0YWluKGNnSW1h
Z2UpOwotICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVlOwotICAgIG1fZnJhbWVzWzBd
Lm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLQotICAgIGNoZWNrRm9yU29saWRDb2xvcigpOworICAg
IG1fZnJhbWVzWzBdID0gSW1hZ2VGcmFtZURhdGEoaW1hZ2UpOwogfQogCiB2b2lkIEJpdG1hcElt
YWdlOjpkZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0CkBAIC0xMjUsNjQg
KzE1MSwyMSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxpbmdM
ZXZlbCgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBtX21pbmltdW1T
dWJzYW1wbGluZ0xldmVsID0gY3VycmVudExldmVsOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpj
aGVja0ZvclNvbGlkQ29sb3IoKQotewotICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVl
OwotICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0KLSAgICBpZiAoZnJhbWVDb3VudCgpID4g
MSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFoYXZlRnJhbWVBdEluZGV4KDApKSB7Ci0g
ICAgICAgIEludFNpemUgc2l6ZSA9IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7Ci0g
ICAgICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKDApKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBudWxs
cHRyOwotICAgIGlmIChtX2ZyYW1lcy5zaXplKCkpCi0gICAgICAgIGltYWdlID0gbV9mcmFtZXNb
MF0ubV9mcmFtZTsKLQotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZvciBzb2xpZCBjb2xvciBpbiB0aGUgaW1wb3J0YW50
IHNwZWNpYWwgY2FzZSBvZiBhIDF4MSBpbWFnZS4KLSAgICBpZiAoQ0dJbWFnZUdldFdpZHRoKGlt
YWdlKSA9PSAxICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IDEpIHsKLSAgICAgICAgdW5z
aWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWws
IDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCi0gICAgICAgICAg
ICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJp
ZykpOwotICAgICAgICBpZiAoIWJpdG1hcENvbnRleHQpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dChiaXRtYXBDb250ZXh0LmdldCgpKS5zZXRDb21wb3NpdGVP
cGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgIENHUmVjdCBkZXN0aW5hdGlvblJlY3Qg
PSBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0
bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LCBpbWFnZSk7Ci0gICAgICAgIGlmICgh
cGl4ZWxbM10pCi0gICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcigwLCAwLCAwLCAwKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zb2xpZENvbG9yID0gQ29sb3IocGl4ZWxbMF0g
KiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAy
NTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotCi0gICAgICAgIG1faXNTb2xpZENvbG9yID0gdHJ1
ZTsKLSAgICB9CisgICAgbV9tYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCA9IGN1cnJlbnRMZXZlbDsK
IH0KIAogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCiB7Ci0gICAgcmV0
dXJuIGZyYW1lQXRJbmRleCgwKTsKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCkuZ2V0
KCk7CiB9CiAKIENHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgQ0dJ
bWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVBdEluZGV4KGkpOwotICAgICAgICBpZiAoY2dJbWFnZSAm
JiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChjZ0lt
YWdlKSkgPT0gc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBjZ0ltYWdlOworICAgICAgICBQYXNz
TmF0aXZlSW1hZ2VQdHIgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKKyAgICAgICAgaWYg
KGltYWdlICYmIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdl
dEhlaWdodChpbWFnZS5nZXQoKSkpID09IHNpemUpCisgICAgICAgICAgICByZXR1cm4gaW1hZ2Uu
Z2V0KCk7CiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQgQ0dJbWFnZVJl
ZiBpZiB3ZSBjYW4ndCBmaW5kIHRoZSByaWdodCBzaXplCkBAIC0xOTcsOCArMTgwLDggQEAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAgIAog
ICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoTlVMTCwg
Y291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJlZiBjdXJyRnJhbWUgPSBmcmFt
ZUF0SW5kZXgoaSkpCi0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXksIGN1cnJG
cmFtZSk7CisgICAgICAgIGlmIChOYXRpdmVJbWFnZVB0ciBjdXJyRnJhbWUgPSBmcmFtZUltYWdl
QXRJbmRleChpKSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZy
YW1lLmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwogfQpAQCAtMjEx
LDE1ICsxOTQsMTUgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICBzdGFydEFuaW1hdGlv
bigpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CisgICAgTmF0
aXZlSW1hZ2VQdHIgaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZv
ciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgogICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29u
dGV4dChjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKGNv
cHlVbnNjYWxlZEZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSkpOworICAgICAgICBpbWFnZSA9
IGNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBlbHNl
IHsKICAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBw
bHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LnBsYXRmb3Jt
Q29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxm
bG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAv
IHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQg
LyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKLSAgICAgICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9j
dXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOworICAgICAgICBpbWFnZSA9IGZyYW1lSW1h
Z2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBzdWJzYW1wbGluZ1NjYWxlKTsKICAgICB9CiAKICAg
ICBpZiAoIWltYWdlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdl
IHlldC4KQEAgLTI1MSwxOCArMjM0LDE4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAotUGFzc05hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQor
UGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgp
IHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMu
c2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKICAgICAgICAgY2FjaGVGcmFtZShp
bmRleCwgMCk7CiAKICAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwp
Ci0gICAgICAgIHJldHVybiBDR0ltYWdlUmV0YWluKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKTsK
KyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOwogCi0gICAgcmV0dXJuIG1f
c291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CisgICAgcmV0dXJuIG1fc291cmNlLmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cAppbmRleCA2YzAzYTJjZWY4NDYwNjU2MWVhMDdlYjkyOGYxY2YyOTVmOWY1ZTM2Li43YTEzYmI1
ODQ2NzA4ZDM3ZTAyYmQzZGQ2NzIzYzI3YTQ5NTE3NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cApAQCAtMzMzLDEwICszMzMsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRy
YWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAg
aWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGFkb3B0Q0YoZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5k
ZXgoMCkpOworICAgICAgICBtX2RlY29kZWRJbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoMCk7CiAgICAgICAgIG1fY2dJbWFnZSA9IG1fZGVjb2RlZEltYWdlLmdldCgpOwog
ICAgIH0gZWxzZQotICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOworICAgICAgICBtX2NnSW1hZ2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpLmdldCgpOwogICAgIGlmICghbV9jZ0ltYWdlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpw
YWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZwog
ICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xh
dGUoMCwgLWltYWdlSGVpZ2h0KTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNn
SW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29weSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGE0NDk2NTQwNDZhZThmMTBhYmFkMTY0MTVlNjQ2MGFk
YmJiYjhlODguLjE2MjA5YWY1MzQ0ODFkYjRjZGRkOGI0MjNjZTdiZjJhNDBiMGRiZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKQEAgLTMxMSw4ICszMTEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dAogICAgIGZsb2F0IGFkanVzdGVkWCA9IHBoYXNlLngoKSAtIGRlc3RSZWN0LngoKSArIHRpbGVS
ZWN0LngoKSAqIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5hKCkpOyAv
LyBXZSB0cmFuc2xhdGVkIHRoZSBjb250ZXh0IHNvIHRoYXQgZGVzdFJlY3QueCgpIGlzIHRoZSBv
cmlnaW4sIHNvIHN1YnRyYWN0IGl0IG91dC4KICAgICBmbG9hdCBhZGp1c3RlZFkgPSBkZXN0UmVj
dC5oZWlnaHQoKSAtIChwaGFzZS55KCkgLSBkZXN0UmVjdC55KCkgKyB0aWxlUmVjdC55KCkgKiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uZCgpKSArIHNjYWxlZFRpbGVI
ZWlnaHQpOwogCi0gICAgQ0dJbWFnZVJlZiB0aWxlSW1hZ2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwotICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFn
ZSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRpbGVJbWFnZSA9IGltYWdlLm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGls
ZUltYWdlLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJbWFnZTsKICNp
ZiBQTEFURk9STShJT1MpCkBAIC0zMjYsMTMgKzMyNiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdAogICAgICAgICAvLyBDb3B5aW5nIGEgc3ViLWltYWdlIG91dCBvZiBhIHBhcnRpYWxseS1k
ZWNvZGVkIGltYWdlIHN0b3BzIHRoZSBkZWNvZGluZyBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIEl0
IHNob3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgLy8gYmVjYXVzZSBzdWItaW1hZ2VzIGFyZSBv
bmx5IHVzZWQgZm9yIGJvcmRlci1pbWFnZSwgd2hpY2ggb25seSByZW5kZXJzIHdoZW4gdGhlIGlt
YWdlIGlzIGZ1bGx5IGRlY29kZWQuCiAgICAgICAgIEFTU0VSVChoID09IGltYWdlLmhlaWdodCgp
KTsKLSAgICAgICAgc3ViSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSW1hZ2VJblJl
Y3QodGlsZUltYWdlLCB0aWxlUmVjdCkpOworICAgICAgICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1hZ2UuZ2V0KCksIHRpbGVSZWN0KSk7CiAg
ICAgfQogCiAgICAgLy8gSWYgd2UgbmVlZCB0byBwYWludCBnYXBzIGJldHdlZW4gdGlsZXMgYmVj
YXVzZSB3ZSBoYXZlIGEgcGFydGlhbGx5IGxvYWRlZCBpbWFnZSBvciBub24temVybyBzcGFjaW5n
LAogICAgIC8vIGZhbGwgYmFjayB0byB0aGUgbGVzcyBlZmZpY2llbnQgQ0dQYXR0ZXJuLWJhc2Vk
IG1lY2hhbmlzbS4KICAgICBmbG9hdCBzY2FsZWRUaWxlV2lkdGggPSB0aWxlUmVjdC53aWR0aCgp
ICogbmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7Ci0gICAgZmxv
YXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0aWxlSW1hZ2UpOworICAgIGZsb2F0IHcgPSBDR0ltYWdl
R2V0V2lkdGgodGlsZUltYWdlLmdldCgpKTsKICAgICBpZiAodyA9PSBpbWFnZS5zaXplKCkud2lk
dGgoKSAmJiBoID09IGltYWdlLnNpemUoKS5oZWlnaHQoKSAmJiAhc3BhY2luZy53aWR0aCgpICYm
ICFzcGFjaW5nLmhlaWdodCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDRyBzZWVtcyB0byBzbmFw
IHRoZSBpbWFnZXMgdG8gaW50ZWdyYWwgc2l6ZXMuIFdoZW4gd2UgY2FyZSAoZS5nLiB3aXRoIGJv
cmRlci1pbWFnZS1yZXBlYXQ6IHJvdW5kKSwKICAgICAgICAgLy8gd2Ugc2hvdWxkIHRpbGUgYWxs
IGJ1dCB0aGUgbGFzdCwgYW5kIHN0ZXRjaCB0aGUgbGFzdCBpbWFnZSB0byBmaXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MjVhYzRhZjEzMDFlNGI1YjFjNzIyNmE1NTlmMmYzOTNlZDhiNDk4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMCwwICsxLDQxMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZURl
Y29kZXIuaCIKKworI2lmIFVTRShDRykKKworI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgor
I2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2lu
Y2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNp
ZiAhUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRp
b25TZXJ2aWNlcy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4KKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjZW5kaWYKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisjaW1wb3J0IDxJbWFnZUlPL0NHSW1hZ2VTb3VyY2VQcml2YXRlLmg+CisjZWxzZQorY29u
c3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTdWJzYW1wbGVGYWN0b3IgPSBDRlNUUigia0NH
SW1hZ2VTb3VyY2VTdWJzYW1wbGVGYWN0b3IiKTsKK2NvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdl
U291cmNlU2hvdWxkQ2FjaGVJbW1lZGlhdGVseSA9IENGU1RSKCJrQ0dJbWFnZVNvdXJjZVNob3Vs
ZENhY2hlSW1tZWRpYXRlbHkiKTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAg
Citjb25zdCBDRlN0cmluZ1JlZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR1VuY2xhbXBlZERl
bGF5VGltZSA9IENGU1RSKCJVbmNsYW1wZWREZWxheVRpbWUiKTsKK2NvbnN0IENGU3RyaW5nUmVm
IFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HRGVsYXlUaW1lID0gQ0ZTVFIoIkRlbGF5VGltZSIp
OworY29uc3QgQ0ZTdHJpbmdSZWYgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdMb29wQ291bnQg
PSBDRlNUUigiTG9vcENvdW50Iik7CisKK2NvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291cmNl
U2hvdWxkUHJlZmVyUkdCMzIgPSBDRlNUUigia0NHSW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0Iz
MiIpOworY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEgPSBDRlNU
Uigia0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEiKTsKKworc3RhdGljIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyhTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwsIERlY29kZU1vZGUgZGVjb2RlTW9kZSkKK3sKKyAgICBjb25zdCBDRklu
ZGV4IGJhc2ljT3B0aW9ucyA9IDM7CisgICAgY29uc3Qgdm9pZCoga2V5c1tiYXNpY09wdGlvbnMg
KyAyXSA9IHsga0NHSW1hZ2VTb3VyY2VTaG91bGRDYWNoZSwga0NHSW1hZ2VTb3VyY2VTaG91bGRQ
cmVmZXJSR0IzMiwga0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEgfTsKKyAgICBjb25zdCB2b2lk
KiB2YWx1ZXNbYmFzaWNPcHRpb25zICsgMl0gPSB7IGtDRkJvb2xlYW5UcnVlLCBrQ0ZCb29sZWFu
VHJ1ZSwga0NGQm9vbGVhblRydWUgfTsKKyAgICBDRkluZGV4IG51bU9wdGlvbnMgPSBiYXNpY09w
dGlvbnM7CisgICAgCisgICAgaWYgKHN1YnNhbXBsaW5nTGV2ZWwgPiAwKSB7CisgICAgICAgIHNo
b3J0IGNvbnN0cmFpbmVkU3Vic2FtcGxpbmdMZXZlbCA9IHN0ZDo6bWluPHNob3J0PigzLCBzdGQ6
Om1heDxzaG9ydD4oMCwgc3Vic2FtcGxpbmdMZXZlbCkpOworICAgICAgICBpbnQgc3Vic2FtcGxl
SW50ID0gMSA8PCBjb25zdHJhaW5lZFN1YnNhbXBsaW5nTGV2ZWw7IC8vIFswLi4zXSA9PiBbMSwg
MiwgNCwgOF0KKyAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBzdWJzYW1wbGVOdW1iZXIg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsICBrQ0ZOdW1iZXJJbnRUeXBlLCAgJnN1
YnNhbXBsZUludCkpOworICAgICAgICAKKyAgICAgICAga2V5c1tudW1PcHRpb25zXSA9IGtDR0lt
YWdlU291cmNlU3Vic2FtcGxlRmFjdG9yOworICAgICAgICB2YWx1ZXNbbnVtT3B0aW9ucysrXSA9
IGtDR0ltYWdlU291cmNlU3Vic2FtcGxlRmFjdG9yOworICAgIH0KKyAgICAKKyAgICBpZiAoZGVj
b2RlTW9kZSA9PSBEZWNvZGVNb2RlOjpJbW1lZGlhdGUpIHsKKyAgICAgICAga2V5c1tudW1PcHRp
b25zXSA9IGtDR0ltYWdlU291cmNlU2hvdWxkQ2FjaGVJbW1lZGlhdGVseTsKKyAgICAgICAgdmFs
dWVzW251bU9wdGlvbnMrK10gPSBrQ0ZCb29sZWFuVHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKG51bGxwdHIsIGtleXMsIHZhbHVlcywgbnVt
T3B0aW9ucywgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOworfQorCitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gaW1hZ2VTb3VyY2VPcHRpb25zKFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCA9
IDAsIERlY29kZU1vZGUgZGVjb2RlTW9kZSA9IERlY29kZU1vZGU6OkxhenkpCit7CisgICAgaWYg
KHN1YnNhbXBsaW5nTGV2ZWwgfHwgZGVjb2RlTW9kZSA9PSBEZWNvZGVNb2RlOjpJbW1lZGlhdGUp
CisgICAgICAgIHJldHVybiBjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMoc3Vic2FtcGxpbmdMZXZl
bCwgZGVjb2RlTW9kZSk7CisgICAgCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+PiBvcHRpb25zID0gY3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKDAs
IERlY29kZU1vZGU6OkxhenkpOworICAgIHJldHVybiBvcHRpb25zOworfQorCitzdGF0aWMgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZiBp
bWFnZVByb3BlcnRpZXMpCit7CisgICAgQVNTRVJUKGltYWdlUHJvcGVydGllcyk7CisgICAgQ0ZO
dW1iZXJSZWYgb3JpZW50YXRpb25Qcm9wZXJ0eSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShpbWFnZVByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlPcmllbnRhdGlvbik7Cisg
ICAgaWYgKCFvcmllbnRhdGlvblByb3BlcnR5KQorICAgICAgICByZXR1cm4gRGVmYXVsdEltYWdl
T3JpZW50YXRpb247CisgICAgCisgICAgaW50IGV4aWZWYWx1ZTsKKyAgICBDRk51bWJlckdldFZh
bHVlKG9yaWVudGF0aW9uUHJvcGVydHksIGtDRk51bWJlckludFR5cGUsICZleGlmVmFsdWUpOwor
ICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpmcm9tRVhJRlZhbHVlKGV4aWZWYWx1ZSk7Cit9
CisgICAgCisjaWYgIVBMQVRGT1JNKENPQ09BKQorc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVz
QXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXpl
X3QgY291bnQpCit7CisgICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBzaXplX3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpOworICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICAKKyAgICBjb25zdCBjaGFyKiBzb3VyY2UgPSBzaGFyZWRCdWZmZXItPmRh
dGEoKSArIHBvc2l0aW9uOworICAgIHNpemVfdCBhbW91bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KGNv
dW50LCBzb3VyY2VTaXplIC0gcG9zaXRpb24pOworICAgIG1lbWNweShidWZmZXIsIHNvdXJjZSwg
YW1vdW50KTsKKyAgICByZXR1cm4gYW1vdW50OworfQorCit2b2lkIHNoYXJlZEJ1ZmZlclJlbGVh
c2Uodm9pZCogaW5mbykKK3sKKyAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRp
Y19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsK
K30KKyNlbmRpZgorCitJbWFnZURlY29kZXI6OkltYWdlRGVjb2RlcigpCit7CisgICAgbV9uYXRp
dmVEZWNvZGVyID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKDApOworfQorCitTdWJz
YW1wbGluZ0xldmVsIEltYWdlRGVjb2Rlcjo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0
IHNjYWxlLCBTdWJzYW1wbGluZ0xldmVsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKQoreworICAg
IC8vIFRoZXJlIGFyZSBmb3VyIHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAxID0gMC41eCwg
MiA9IDAuMjV4LCAzID0gMC4xMjV4LgorICAgIGZsb2F0IGNsYW1wZWRTY2FsZSA9IHN0ZDo6bWF4
PGZsb2F0PigwLjEyNSwgc3RkOjptaW48ZmxvYXQ+KDEsIHNjYWxlKSk7CisgICAgU3Vic2FtcGxp
bmdMZXZlbCByZXN1bHQgPSBjZWlsZihsb2cyZigxIC8gY2xhbXBlZFNjYWxlKSk7CisgICAgQVNT
RVJUKHJlc3VsdCA+PTAgJiYgcmVzdWx0IDw9IDMpOworICAgIHJldHVybiBzdGQ6Om1pbihyZXN1
bHQsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKTsKK30KKworc2l6ZV90IEltYWdlRGVjb2Rlcjo6
Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKK3sKKyAgICAvLyBNZWFzdXJlZCBi
eSB0cmFjaW5nIG1hbGxvYy9jYWxsb2MgY2FsbHMgb24gTWFjIE9TIDEwLjYuNiwgeDg2XzY0Lgor
ICAgIC8vIEEgbm9uLXplcm8gdmFsdWUgZW5zdXJlcyBjYWNoZWQgaW1hZ2VzIHdpdGggbm8gZGVj
b2RlZCBmcmFtZXMgc3RpbGwgZW50ZXIKKyAgICAvLyB0aGUgbGl2ZSBkZWNvZGVkIHJlc291cmNl
cyBsaXN0IHdoZW4gdGhlIENHSW1hZ2VTb3VyY2UgZGVjb2RlcyBpbWFnZQorICAgIC8vIHByb3Bl
cnRpZXMsIGFsbG93aW5nIHRoZSBjYWNoZSB0byBwcnVuZSB0aGUgcGFydGlhbGx5IGRlY29kZWQg
aW1hZ2UuCisgICAgLy8gVGhpcyB2YWx1ZSBpcyBsaWtlbHkgdG8gYmUgaW5hY2N1cmF0ZSBvbiBv
dGhlciBwbGF0Zm9ybXMsIGJ1dCB0aGUgb3ZlcmFsbAorICAgIC8vIGJlaGF2aW9yIGlzIHVuY2hh
bmdlZC4KKyAgICByZXR1cm4gMTMwODg7Cit9CisKK1N0cmluZyBJbWFnZURlY29kZXI6OmZpbGVu
YW1lRXh0ZW5zaW9uKCkgY29uc3QKK3sKKyAgICBDRlN0cmluZ1JlZiBpbWFnZVNvdXJjZVR5cGUg
PSBDR0ltYWdlU291cmNlR2V0VHlwZShtX25hdGl2ZURlY29kZXIpOworICAgIHJldHVybiBXZWJD
b3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUoaW1hZ2VTb3VyY2VUeXBl
KTsKK30KKworYm9vbCBJbWFnZURlY29kZXI6OmlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0Cit7Cisg
ICAgLy8gUmFnbmFyb3MgeWVsbHM6IFRPTyBTT09OISBZb3UgaGF2ZSBhd2FrZW5lZCBtZSBUT08g
U09PTiwgRXhlY3V0dXMhCisgICAgaWYgKENHSW1hZ2VTb3VyY2VHZXRTdGF0dXMobV9uYXRpdmVE
ZWNvZGVyKSA8IGtDR0ltYWdlU3RhdHVzSW5jb21wbGV0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGltYWdlMFByb3BlcnRpZXMg
PSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNv
ZGVyLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOworICAgIGlmICghaW1hZ2UwUHJv
cGVydGllcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBDRkRpY3Rp
b25hcnlDb250YWluc0tleShpbWFnZTBQcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5
UGl4ZWxXaWR0aCkKKyAgICAmJiBDRkRpY3Rpb25hcnlDb250YWluc0tleShpbWFnZTBQcm9wZXJ0
aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxIZWlnaHQpOworfQorCitJbnRTaXplIElt
YWdlRGVjb2Rlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2l6ZS5pc0VtcHR5KCkpCisg
ICAgICAgIG1fc2l6ZSA9IGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CisgICAgcmV0dXJuIG1fc2l6
ZTsKK30KKworc2l6ZV90IEltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX25hdGl2ZURlY29kZXIpOworfQorCitpbnQg
SW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9uQ291bnQoKSBjb25zdAoreworICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJv
cGVydGllcyhtX25hdGl2ZURlY29kZXIsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7Cisg
ICAgaWYgKCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4gY0FuaW1hdGlvbkxvb3BPbmNlOwor
ICAgIAorICAgIENGRGljdGlvbmFyeVJlZiBnaWZQcm9wZXJ0aWVzID0gKENGRGljdGlvbmFyeVJl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5
R0lGRGljdGlvbmFyeSk7CisgICAgaWYgKGdpZlByb3BlcnRpZXMpIHsKKyAgICAgICAgQ0ZOdW1i
ZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGdpZlByb3BlcnRp
ZXMsIGtDR0ltYWdlUHJvcGVydHlHSUZMb29wQ291bnQpOworICAgICAgICAKKyAgICAgICAgLy8g
Tm8gcHJvcGVydHkgbWVhbnMgbG9vcCBvbmNlLgorICAgICAgICBpZiAoIW51bSkKKyAgICAgICAg
ICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7CisgICAgICAgIAorICAgICAgICBpbnQgbG9v
cENvdW50OworICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwg
Jmxvb3BDb3VudCk7CisgICAgICAgIAorICAgICAgICAvLyBBIHByb3BlcnR5IHdpdGggdmFsdWUg
MCBtZWFucyBsb29wIGZvcmV2ZXIuCisgICAgICAgIHJldHVybiBsb29wQ291bnQgPyBsb29wQ291
bnQgOiBjQW5pbWF0aW9uTG9vcEluZmluaXRlOworICAgIH0KKyAgICAKKyAgICBDRkRpY3Rpb25h
cnlSZWYgcG5nUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBOR0RpY3Rpb25hcnkpOworICAg
IGlmIChwbmdQcm9wZXJ0aWVzKSB7CisgICAgICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJl
clJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJDb3JlQ0dJbWFnZVBy
b3BlcnR5QVBOR0xvb3BDb3VudCk7CisgICAgICAgIGlmICghbnVtKQorICAgICAgICAgICAgcmV0
dXJuIGNBbmltYXRpb25Mb29wT25jZTsKKyAgICAgICAgCisgICAgICAgIGludCBsb29wQ291bnQ7
CisgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmbG9vcENv
dW50KTsKKyAgICAgICAgcmV0dXJuIGxvb3BDb3VudCA/IGxvb3BDb3VudCA6IGNBbmltYXRpb25M
b29wSW5maW5pdGU7CisgICAgfQorICAgIAorICAgIC8vIFR1cm5zIG91dCB3ZSdyZSBub3QgYW4g
YW5pbWF0ZWQgaW1hZ2UgYWZ0ZXIgYWxsLCBzbyB3ZSBkb24ndCBhbmltYXRlLgorICAgIHJldHVy
biBjQW5pbWF0aW9uTm9uZTsKK30KKworYm9vbCBJbWFnZURlY29kZXI6OmdldEhvdFNwb3QoSW50
UG9pbnQmIGhvdFNwb3QpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleCht
X25hdGl2ZURlY29kZXIsIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7CisgICAgaWYg
KCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaW50IHggPSAt
MSwgeSA9IC0xOworICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25h
cnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBDRlNUUigiaG90c3BvdFgiKSk7CisgICAgaWYg
KCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmeCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RZIikpOworICAg
IGlmICghbnVtIHx8ICFDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJnkp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKHggPCAwIHx8IHkgPCAwKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaG90U3BvdCA9IEludFBvaW50KHgsIHkp
OworICAgIHJldHVybiB0cnVlOworfQorCitJbnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJhbWVTaXpl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkg
Y29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRv
cHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlciwg
aW5kZXgsIGltYWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsKS5nZXQoKSkpOworICAg
IAorICAgIGlmICghcHJvcGVydGllcykKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAKKyAgICBp
bnQgd2lkdGggPSAwOworICAgIGludCBoZWlnaHQgPSAwOworICAgIENGTnVtYmVyUmVmIG51bSA9
IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJ
bWFnZVByb3BlcnR5UGl4ZWxXaWR0aCk7CisgICAgaWYgKG51bSkKKyAgICAgICAgQ0ZOdW1iZXJH
ZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ3aWR0aCk7CisgICAgCisgICAgbnVtID0g
KENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0lt
YWdlUHJvcGVydHlQaXhlbEhlaWdodCk7CisgICAgaWYgKG51bSkKKyAgICAgICAgQ0ZOdW1iZXJH
ZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZoZWlnaHQpOworICAgIAorICAgIHJldHVy
biBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVJ
c0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGZyYW1l
Q291bnQoKSk7CisgICAgcmV0dXJuIENHSW1hZ2VTb3VyY2VHZXRTdGF0dXNBdEluZGV4KG1fbmF0
aXZlRGVjb2RlciwgaW5kZXgpID09IGtDR0ltYWdlU3RhdHVzQ29tcGxldGU7Cit9CisKK0ltYWdl
T3JpZW50YXRpb24gSW1hZ2VEZWNvZGVyOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAoreworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBh
ZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVy
LCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKKyAgICBpZiAoIXByb3BlcnRp
ZXMpCisgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKKyAgICAKKyAgICBy
ZXR1cm4gb3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzLmdldCgpKTsKK30KKwor
ZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNv
bnN0Cit7CisgICAgZmxvYXQgZHVyYXRpb24gPSAwOworICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0
SW5kZXgobV9uYXRpdmVEZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkp
KTsKKyAgICBpZiAocHJvcGVydGllcykgeworICAgICAgICBDRkRpY3Rpb25hcnlSZWYgZ2lmUHJv
cGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGll
cy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUdJRkRpY3Rpb25hcnkpOworICAgICAgICBpZiAoZ2lm
UHJvcGVydGllcykgeworICAgICAgICAgICAgaWYgKENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJl
clJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShnaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5
R0lGVW5jbGFtcGVkRGVsYXlUaW1lKSkgeworICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgdW5j
bGFtcGVkIGZyYW1lIGRlbGF5IGlmIGl0IGV4aXN0cy4KKyAgICAgICAgICAgICAgICBDRk51bWJl
ckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVyYXRpb24pOworICAgICAgICAg
ICAgfSBlbHNlIGlmIChDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZ2lmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUdJRkRlbGF5VGltZSkpIHsK
KyAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdGhlIGNsYW1wZWQgZnJhbWUgZGVsYXkg
aWYgdGhlIHVuY2xhbXBlZCBmcmFtZSBkZWxheSBkb2VzIG5vdCBleGlzdC4KKyAgICAgICAgICAg
ICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVyYXRpb24p
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDRkRpY3Rpb25h
cnlSZWYgcG5nUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBOR0RpY3Rpb25hcnkpOworICAg
ICAgICBpZiAocG5nUHJvcGVydGllcykgeworICAgICAgICAgICAgaWYgKENGTnVtYmVyUmVmIG51
bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJD
b3JlQ0dJbWFnZVByb3BlcnR5QVBOR1VuY2xhbXBlZERlbGF5VGltZSkpCisgICAgICAgICAgICAg
ICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckZsb2F0VHlwZSwgJmR1cmF0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBO
R0RlbGF5VGltZSkpCisgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51
bWJlckZsb2F0VHlwZSwgJmR1cmF0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAv
LyBNYW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdl
IGZsYXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCisgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gn
cyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRo
YXQgc3BlY2lmeQorICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3By
b2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgorICAgIC8vIGZv
ciBtb3JlIGluZm9ybWF0aW9uLgorICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKKyAgICAgICAg
cmV0dXJuIDAuMWY7CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitib29sIEltYWdlRGVjb2Rl
cjo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QKK3sKKyAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291
cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2RlciwgMCwgaW1hZ2VTb3VyY2VP
cHRpb25zKCkuZ2V0KCkpKTsKKyAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBDRkRpY3Rpb25hcnlSZWYgamZpZlByb3BlcnRpZXMgPSBzdGF0aWNf
Y2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0
KCksIGtDR0ltYWdlUHJvcGVydHlKRklGRGljdGlvbmFyeSkpOworICAgIGlmIChqZmlmUHJvcGVy
dGllcykgeworICAgICAgICBDRkJvb2xlYW5SZWYgaXNQcm9nQ0ZCb29sID0gc3RhdGljX2Nhc3Q8
Q0ZCb29sZWFuUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShqZmlmUHJvcGVydGllcywga0NHSW1h
Z2VQcm9wZXJ0eUpGSUZJc1Byb2dyZXNzaXZlKSk7CisgICAgICAgIGlmIChpc1Byb2dDRkJvb2wp
IHsKKyAgICAgICAgICAgIGJvb2wgaXNQcm9ncmVzc2l2ZSA9IENGQm9vbGVhbkdldFZhbHVlKGlz
UHJvZ0NGQm9vbCk7CisgICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2Js
ZW0vNTE4NDY1NT4gLSBIYW5nIHJlbmRlcmluZyB2ZXJ5IGxhcmdlIHByb2dyZXNzaXZlIEpQRUcu
IERlY29kaW5nIHByb2dyZXNzaXZlCisgICAgICAgICAgICAvLyBpbWFnZXMgaGFuZ3MgZm9yIGEg
dmVyeSBsb25nIHRpbWUgcmlnaHQgbm93LiBVbnRpbCB0aGlzIGlzIGZpeGVkLCBkb24ndCBzdWIt
c2FtcGxlIHByb2dyZXNzaXZlIGltYWdlcy4gVGhpcworICAgICAgICAgICAgLy8gd2lsbCBjYXVz
ZSB0aGVtIHRvIGZhaWwgb3VyIGxhcmdlIGltYWdlIGNoZWNrIGFuZCB0aGV5IHdvbid0IGJlIGRl
Y29kZWQuCisgICAgICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgdW5kZXJseWluZyBpc3N1
ZSBpcyBmaXhlZCAoPHJkYXI6Ly9wcm9ibGVtLzUxOTE0MTg+KQorICAgICAgICAgICAgcmV0dXJu
ICFpc1Byb2dyZXNzaXZlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVl
OworfQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAoreworICAgIGlmICghZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIENGU3RyaW5nUmVmIGltYWdlVHlwZSA9IENH
SW1hZ2VTb3VyY2VHZXRUeXBlKG1fbmF0aXZlRGVjb2Rlcik7CisgICAgCisgICAgLy8gUmV0dXJu
IGZhbHNlIGlmIHRoZXJlIGlzIG5vIGltYWdlIHR5cGUgb3IgdGhlIGltYWdlIHR5cGUgaXMgSlBF
RywgYmVjYXVzZQorICAgIC8vIEpQRUcgZG9lcyBub3Qgc3VwcG9ydCBhbHBoYSB0cmFuc3BhcmVu
Y3kuCisgICAgaWYgKCFpbWFnZVR5cGUgfHwgQ0ZFcXVhbChpbWFnZVR5cGUsIENGU1RSKCJwdWJs
aWMuanBlZyIpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIEZJWE1FOiBD
b3VsZCByZXR1cm4gZmFsc2UgZm9yIG90aGVyIG5vbi10cmFuc3BhcmVudCBpbWFnZSBmb3JtYXRz
LgorICAgIC8vIEZJWE1FOiBDb3VsZCBtYXliZSByZXR1cm4gZmFsc2UgZm9yIGEgR0lGIEZyYW1l
IGlmIHdlIGhhdmUgZW5vdWdoIGluZm8gaW4gdGhlIEdJRiBwcm9wZXJ0aWVzIGRpY3Rpb25hcnkK
KyAgICAvLyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSB0cmFuc3BhcmVudCBjb2xvciB3
YXMgZGVmaW5lZC4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5zaWduZWQgSW1hZ2VEZWNvZGVy
OjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCkgY29uc3QKK3sKKyAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1lU2l6ZUF0
SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIHJldHVybiBmcmFtZVNpemUud2lk
dGgoKSAqIGZyYW1lU2l6ZS5oZWlnaHQoKSAqIDQ7Cit9CisKK1Bhc3NOYXRpdmVJbWFnZVB0ciBJ
bWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBEZWNvZGVNb2RlIGRlY29kZU1vZGUpIGNvbnN0
Cit7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlU291
cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KG1fbmF0aXZlRGVjb2RlciwgaW5kZXgsIGltYWdlU291cmNl
T3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsLCBkZWNvZGVNb2RlKS5nZXQoKSkpOworICAgICAgICAK
KyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzczNzExOTg+IC0gQ29y
ZUdyYXBoaWNzIGNoYW5nZWQgdGhlIGRlZmF1bHQgY2FjaGluZyBiZWhhdmlvdXIgaW4gaU9TIDQu
MCB0byBrQ0dJbWFnZUNhY2hpbmdUcmFuc2llbnQKKyAgICAvLyB3aGljaCBjYXVzZWQgYSBwZXJm
b3JtYW5jZSByZWdyZXNzaW9uIGZvciB1cyBzaW5jZSB0aGUgaW1hZ2VzIGhhZCB0byBiZSByZXNh
bXBsZWQvcmVjcmVhdGVkIGV2ZXJ5IHRpbWUgd2UgY2FsbGVkCisgICAgLy8gQ0dDb250ZXh0RHJh
d0ltYWdlLiBXZSBub3cgdGVsbCBDRyB0byBjYWNoZSB0aGUgZHJhd24gaW1hZ2VzLiBTZWUgYWxz
byA8cmRhcjovL3Byb2JsZW0vMTQzNjY3NTU+IC0KKyAgICAvLyBDb3JlR3JhcGhpY3MgbmVlZHMg
dG8gdW4tZGVwcmVjYXRlIGtDR0ltYWdlQ2FjaGluZ1RlbXBvcmFyeSBzaW5jZSBpdCdzIHN0aWxs
IG5vdCB0aGUgZGVmYXVsdC4KKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNh
dGVkLWRlY2xhcmF0aW9ucyIKKyNlbmRpZgorICAgICAgICBDR0ltYWdlU2V0Q2FjaGluZ0ZsYWdz
KGltYWdlLmdldCgpLCBrQ0dJbWFnZUNhY2hpbmdUZW1wb3JhcnkpOworI2lmIENPTVBJTEVSKENM
QU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorICAgICAgICAKKyAgICBDRlN0cmluZ1JlZiBpbWFnZVVUSSA9IENHSW1hZ2VT
b3VyY2VHZXRUeXBlKG1fbmF0aXZlRGVjb2Rlcik7CisgICAgc3RhdGljIGNvbnN0IENGU3RyaW5n
UmVmIHhibVVUSSA9IENGU1RSKCJwdWJsaWMueGJpdG1hcC1pbWFnZSIpOworCisgICAgaWYgKCFp
bWFnZVVUSSkKKyAgICAgICAgcmV0dXJuIGltYWdlOworCisgICAgaWYgKCFDRkVxdWFsKGltYWdl
VVRJLCB4Ym1VVEkpKQorICAgICAgICByZXR1cm4gaW1hZ2U7CisKKyAgICAvLyBJZiBpdCBpcyBh
biB4Ym0gaW1hZ2UsIG1hc2sgb3V0IGFsbCB0aGUgd2hpdGUgYXJlYXMgdG8gcmVuZGVyIHRoZW0g
dHJhbnNwYXJlbnQuCisgICAgY29uc3QgQ0dGbG9hdCBtYXNraW5nQ29sb3JzWzZdID0gezI1NSwg
MjU1LCAgMjU1LCAyNTUsIDI1NSwgMjU1fTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbWFz
a2VkSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoTWFza2luZ0NvbG9ycyhpbWFnZS5n
ZXQoKSwgbWFza2luZ0NvbG9ycykpOworICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZElt
YWdlIDogaW1hZ2U7Cit9CisgICAgCit2b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBi
ZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVk
Z2UuCisgICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYg
aW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBp
cworICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCisgICAgQ0dJbWFn
ZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLCBkYXRhLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyNlbHNlCisgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJv
dmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgorICAgIGRhdGEtPnJlZigpOworICAgIC8v
IFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBH
ZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKKyAgICAvLyBkb2VzIG5vdCBw
cm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUg
dGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAorICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVz
aW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KKyAgICBDR0RhdGFQcm92aWRlckRpcmVj
dENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0
Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07CisgICAgUmV0YWluUHRyPENH
RGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3Jl
YXRlRGlyZWN0KGRhdGEsIGRhdGEtPnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CisgICAg
Q0dJbWFnZVNvdXJjZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIsIGRhdGFQcm92
aWRlci5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyNlbmRpZgorfQorCit9CisKKyNlbmRpZiAv
LyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NjFhYjllMTc3OTE3MmJmM2VkMjdmYTA0MGEwZTQx
OTFiYTE2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXIuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbWFnZURlY29kZXJfaAorI2Rl
ZmluZSBJbWFnZURlY29kZXJfaAorCisjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKKyNpbmNsdWRl
ICJJbnRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIHByZWZlcnJlZEV4
dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOworCitlbnVtIGNs
YXNzIERlY29kZU1vZGUgeyBJbW1lZGlhdGUsIExhenkgfTsKKworY2xhc3MgU2hhcmVkQnVmZmVy
OworCitjbGFzcyBJbWFnZURlY29kZXIgeworcHVibGljOgorICAgIEltYWdlRGVjb2RlcigpOwor
ICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpIHsgfQorCisgICAgc3RhdGljIHNpemVfdCBieXRl
c0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKKyAgICBzdGF0aWMgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2
ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOworCisgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3Q7CisgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBjb25zdDsKKyAgICBJbnRT
aXplIHNpemUoKSBjb25zdDsKKyAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OworICAgIGlu
dCByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKKyAgICBib29sIGdldEhvdFNwb3QoSW50UG9pbnQm
IGhvdFNwb3QpIGNvbnN0OworCisgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CisgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCkgY29uc3Q7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgo
c2l6ZV90KSBjb25zdDsKKworICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCkg
Y29uc3Q7CisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OworICAg
IGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAg
dW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCkg
Y29uc3Q7CisKKyAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGVNb2RlID0gRGVjb2RlTW9kZTo6TGF6eSkg
Y29uc3Q7CisKKyAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOworICAgIAorcHJvdGVjdGVkOgorICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7Cisg
ICAgQ0dJbWFnZVNvdXJjZVJlZiBtX25hdGl2ZURlY29kZXI7Cit9OworICAgIAorfQorCisjZW5k
aWYgLy8gSW1hZ2VEZWNvZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXggZDRhMDEyYjZmNTdiZjUzOTMwNjQ3
NzdiNmMxMDkzNjZiMjRjNDQ1Yy4uZGNmNzlhNzJhMTVlOWY3OTQwZmFkYTZkNjE5NWI4Y2Q0MzU0
MzNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VTb3VyY2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VTb3VyY2VDRy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJbWFnZVNvdXJj
ZUNHLmgiCiAKICNpbmNsdWRlICJDb3JlR3JhcGhpY3NTUEkuaCIKKyNpbmNsdWRlICJJbWFnZURl
Y29kZXIuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW50UG9p
bnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCkBAIC00NCw0NCArNDUsOSBAQAogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
LSNpbXBvcnQgPEltYWdlSU8vQ0dJbWFnZVNvdXJjZVByaXZhdGUuaD4KLSNlbHNlCi1jb25zdCBD
RlN0cmluZ1JlZiBrQ0dJbWFnZVNvdXJjZVN1YnNhbXBsZUZhY3RvciA9IENGU1RSKCJrQ0dJbWFn
ZVNvdXJjZVN1YnNhbXBsZUZhY3RvciIpOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY29uc3QgQ0ZTdHJpbmdSZWYgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdVbmNsYW1wZWRE
ZWxheVRpbWUgPSBDRlNUUigiVW5jbGFtcGVkRGVsYXlUaW1lIik7Ci1jb25zdCBDRlN0cmluZ1Jl
ZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR0RlbGF5VGltZSA9IENGU1RSKCJEZWxheVRpbWUi
KTsKLWNvbnN0IENGU3RyaW5nUmVmIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HTG9vcENvdW50
ID0gQ0ZTVFIoIkxvb3BDb3VudCIpOwotCi1jb25zdCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVNvdXJj
ZVNob3VsZFByZWZlclJHQjMyID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdC
MzIiKTsKLWNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291cmNlU2tpcE1ldGFkYXRhID0gQ0ZT
VFIoImtDR0ltYWdlU291cmNlU2tpcE1ldGFkYXRhIik7Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0Ep
Ci1zaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQq
IGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKLXsKLSAgICBTaGFyZWRCdWZm
ZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwotICAg
IHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7Ci0gICAgaWYgKHBvc2l0
aW9uID49IHNvdXJjZVNpemUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgY2hhciog
c291cmNlID0gc2hhcmVkQnVmZmVyLT5kYXRhKCkgKyBwb3NpdGlvbjsKLSAgICBzaXplX3QgYW1v
dW50ID0gc3RkOjptaW48c2l6ZV90Pihjb3VudCwgc291cmNlU2l6ZSAtIHBvc2l0aW9uKTsKLSAg
ICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGFtb3VudCk7Ci0gICAgcmV0dXJuIGFtb3VudDsKLX0K
LQotdm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8pCi17Ci0gICAgU2hhcmVkQnVm
ZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmRlcmVmKCk7Ci19Ci0jZW5kaWYKLQogSW1hZ2VTb3VyY2U6OkltYWdl
U291cmNlKEltYWdlU291cmNlOjpBbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQotICAgIDogbV9kZWNvZGVyKDApCiB7CiAgICAgLy8gRklYTUU6IEFs
cGhhT3B0aW9uIGFuZCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBhcmUgaWdub3JlZC4KIH0K
QEAgLTEwMCwzNTQgKzY2LDEyOSBAQCB2b2lkIEltYWdlU291cmNlOjpjbGVhcihib29sIGRlc3Ry
b3lBbGxGcmFtZXMsIHNpemVfdCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKG1fZGVjb2Rl
cik7CisgICAgICAgIGRlbGV0ZSBtX2RlY29kZXI7CiAgICAgICAgIG1fZGVjb2RlciA9IDA7CiAg
ICAgfQorICAgIAogICAgIGlmIChkYXRhKQogICAgICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFS
ZWNlaXZlZCk7CiB9Ci0KLXN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjcmVhdGVJ
bWFnZVNvdXJjZU9wdGlvbnMoU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQorICAg
IAordm9pZCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlcklzQ3JlYXRlZChTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7Ci0gICAgaWYgKCFzdWJzYW1wbGluZ0xldmVsKSB7Ci0gICAgICAgIGNvbnN0IHVu
c2lnbmVkIG51bU9wdGlvbnMgPSAzOwotICAgICAgICBjb25zdCB2b2lkKiBrZXlzW251bU9wdGlv
bnNdID0geyBrQ0dJbWFnZVNvdXJjZVNob3VsZENhY2hlLCBrQ0dJbWFnZVNvdXJjZVNob3VsZFBy
ZWZlclJHQjMyLCBrQ0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSB9OwotICAgICAgICBjb25zdCB2
b2lkKiB2YWx1ZXNbbnVtT3B0aW9uc10gPSB7IGtDRkJvb2xlYW5UcnVlLCBrQ0ZCb29sZWFuVHJ1
ZSwga0NGQm9vbGVhblRydWUgfTsKLSAgICAgICAgcmV0dXJuIENGRGljdGlvbmFyeUNyZWF0ZShu
dWxscHRyLCBrZXlzLCB2YWx1ZXMsIG51bU9wdGlvbnMsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIH0KLQotICAg
IHNob3J0IGNvbnN0cmFpbmVkU3Vic2FtcGxpbmdMZXZlbCA9IHN0ZDo6bWluPHNob3J0PigzLCBz
dGQ6Om1heDxzaG9ydD4oMCwgc3Vic2FtcGxpbmdMZXZlbCkpOwotICAgIGludCBzdWJzYW1wbGVJ
bnQgPSAxIDw8IGNvbnN0cmFpbmVkU3Vic2FtcGxpbmdMZXZlbDsgLy8gWzAuLjNdID0+IFsxLCAy
LCA0LCA4XQotCi0gICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBzdWJzYW1wbGVOdW1iZXIgPSBh
ZG9wdENGKENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsICBrQ0ZOdW1iZXJJbnRUeXBlLCAgJnN1YnNh
bXBsZUludCkpOwotICAgIGNvbnN0IENGSW5kZXggbnVtT3B0aW9ucyA9IDQ7Ci0gICAgY29uc3Qg
dm9pZCoga2V5c1tudW1PcHRpb25zXSA9IHsga0NHSW1hZ2VTb3VyY2VTaG91bGRDYWNoZSwga0NH
SW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0IzMiwga0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEs
IGtDR0ltYWdlU291cmNlU3Vic2FtcGxlRmFjdG9yIH07Ci0gICAgY29uc3Qgdm9pZCogdmFsdWVz
W251bU9wdGlvbnNdID0geyBrQ0ZCb29sZWFuVHJ1ZSwga0NGQm9vbGVhblRydWUsIGtDRkJvb2xl
YW5UcnVlLCBzdWJzYW1wbGVOdW1iZXIuZ2V0KCkgfTsKLSAgICByZXR1cm4gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUobnVsbHB0ciwga2V5cywgdmFsdWVzLCBudW1PcHRpb25zLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CisgICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIAorICAgIGlmIChtX2RlY29kZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2RlY29kZXIgPSBuZXcgSW1hZ2VEZWNvZGVyKCk7
CiB9Ci0KLXN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZVNvdXJjZU9wdGlv
bnMoU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0gMCkKKyAgICAKK3ZvaWQgSW1h
Z2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKLSAgICBpZiAoc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUlt
YWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBpZiAoIWRhdGEpCisgICAg
ICAgIHJldHVybjsKIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPj4gb3B0aW9ucyA9IGNyZWF0ZUltYWdlU291cmNlT3B0aW9ucygwKTsKLSAgICBy
ZXR1cm4gb3B0aW9uczsKLX0KKyAgICBlbnN1cmVEZWNvZGVySXNDcmVhdGVkKGRhdGEpOworICAg
IGlmICghbV9kZWNvZGVyKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQogCi1ib29sIEltYWdlU291cmNlOjppbml0aWFsaXplZCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fZGVjb2RlcjsKKyAgICBtX2RlY29kZXItPnNldERhdGEoZGF0YSwg
YWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorU3RyaW5nIEltYWdlU291cmNlOjpm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYg
KCFtX2RlY29kZXIpCi0gICAgICAgIG1fZGVjb2RlciA9IENHSW1hZ2VTb3VyY2VDcmVhdGVJbmNy
ZW1lbnRhbCgwKTsKLSAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1
ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVy
J3Mga25vd2xlZGdlLiAgV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkKLSAgICAvLyB0byB3
cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhh
dCBJbWFnZUlPIGlzIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJ
bWFnZVNvdXJjZVVwZGF0ZURhdGEobV9kZWNvZGVyLCBkYXRhLT5jcmVhdGVDRkRhdGEoKS5nZXQo
KSwgYWxsRGF0YVJlY2VpdmVkKTsKLSNlbHNlCi0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAg
IG1fZGVjb2RlciA9IENHSW1hZ2VTb3VyY2VDcmVhdGVJbmNyZW1lbnRhbCgwKTsKLSAgICAvLyBD
cmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0
YS0+cmVmKCk7Ci0gICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sg
cmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgot
ICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50
ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCi0gICAgLy8gaXMgYSBy
ZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgotICAgIENH
RGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAw
LCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsK
LSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoZGF0YSwgZGF0YS0+c2l6ZSgpLCAmcHJvdmlkZXJD
YWxsYmFja3MpKTsKLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fZGVjb2Rl
ciwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwotI2VuZGlmCisgICAgcmV0
dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmZpbGVuYW1lRXh0ZW5zaW9uKCkgOiBTdHJp
bmcoKTsKIH0KIAotU3RyaW5nIEltYWdlU291cmNlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0
CitTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUo
ZmxvYXQgc2NhbGUsIFN1YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICBDRlN0cmluZ1JlZiBpbWFnZVNvdXJjZVR5cGUgPSBDR0ltYWdlU291cmNlR2V0VHlwZShtX2Rl
Y29kZXIpOwotICAgIHJldHVybiBXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNv
dXJjZVR5cGUoaW1hZ2VTb3VyY2VUeXBlKTsKKyAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpzdWJz
YW1wbGluZ0xldmVsRm9yU2NhbGUoc2NhbGUsIG1heGltdW1TdWJzYW1wbGluZ0xldmVsKTsKIH0K
KyAgICAKIAotU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZv
clNjYWxlKGZsb2F0IHNjYWxlKSBjb25zdAorc2l6ZV90IEltYWdlU291cmNlOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSBjb25zdAogewotICAgIC8vIFRoZXJlIGFyZSBmb3Vy
IHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAxID0gMC41eCwgMiA9IDAuMjV4LCAzID0gMC4x
MjV4LgotICAgIGZsb2F0IGNsYW1wZWRTY2FsZSA9IHN0ZDo6bWF4PGZsb2F0PigwLjEyNSwgc3Rk
OjptaW48ZmxvYXQ+KDEsIHNjYWxlKSk7Ci0gICAgaW50IHJlc3VsdCA9IGNlaWxmKGxvZzJmKDEg
LyBjbGFtcGVkU2NhbGUpKTsKLSAgICBBU1NFUlQocmVzdWx0ID49MCAmJiByZXN1bHQgPD0gMyk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKIH0KLQorICAgIAogYm9vbCBJbWFnZVNvdXJjZTo6
aXNTaXplQXZhaWxhYmxlKCkKIHsKLSAgICAvLyBSYWduYXJvcyB5ZWxsczogVE9PIFNPT04hIFlv
dSBoYXZlIGF3YWtlbmVkIG1lIFRPTyBTT09OLCBFeGVjdXR1cyEKLSAgICBpZiAoQ0dJbWFnZVNv
dXJjZUdldFN0YXR1cyhtX2RlY29kZXIpIDwga0NHSW1hZ2VTdGF0dXNJbmNvbXBsZXRlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFn
ZTBQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4
KG1fZGVjb2RlciwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKLSAgICBpZiAoIWlt
YWdlMFByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBDRkRp
Y3Rpb25hcnlDb250YWluc0tleShpbWFnZTBQcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3Bl
cnR5UGl4ZWxXaWR0aCkKLSAgICAgICAgJiYgQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoaW1hZ2Uw
UHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBpeGVsSGVpZ2h0KTsKKyAgICByZXR1
cm4gbV9kZWNvZGVyICYmIG1fZGVjb2Rlci0+aXNTaXplQXZhaWxhYmxlKCk7CiB9CiAKLXN0YXRp
YyBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5
UmVmIGltYWdlUHJvcGVydGllcykKK2Jvb2wgSW1hZ2VTb3VyY2U6OmFsbG93U3Vic2FtcGxpbmdP
ZkZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGltYWdlUHJv
cGVydGllcyk7Ci0gICAgQ0ZOdW1iZXJSZWYgb3JpZW50YXRpb25Qcm9wZXJ0eSA9IChDRk51bWJl
clJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZVByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVy
dHlPcmllbnRhdGlvbik7Ci0gICAgaWYgKCFvcmllbnRhdGlvblByb3BlcnR5KQotICAgICAgICBy
ZXR1cm4gRGVmYXVsdEltYWdlT3JpZW50YXRpb247Ci0KLSAgICBpbnQgZXhpZlZhbHVlOwotICAg
IENGTnVtYmVyR2V0VmFsdWUob3JpZW50YXRpb25Qcm9wZXJ0eSwga0NGTnVtYmVySW50VHlwZSwg
JmV4aWZWYWx1ZSk7Ci0gICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OmZyb21FWElGVmFsdWUo
ZXhpZlZhbHVlKTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmFsbG93
U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRleCk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6
OmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0CitJbnRTaXplIElt
YWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0CiB7Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJ
bmRleChtX2RlY29kZXIsIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7Ci0gICAgaWYg
KCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDRkRpY3Rpb25hcnlS
ZWYgamZpZlByb3BlcnRpZXMgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlv
bmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlKRklGRGljdGlv
bmFyeSkpOwotICAgIGlmIChqZmlmUHJvcGVydGllcykgewotICAgICAgICBDRkJvb2xlYW5SZWYg
aXNQcm9nQ0ZCb29sID0gc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShqZmlmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUpGSUZJc1Byb2dyZXNzaXZlKSk7
Ci0gICAgICAgIGlmIChpc1Byb2dDRkJvb2wpIHsKLSAgICAgICAgICAgIGJvb2wgaXNQcm9ncmVz
c2l2ZSA9IENGQm9vbGVhbkdldFZhbHVlKGlzUHJvZ0NGQm9vbCk7Ci0gICAgICAgICAgICAvLyBX
b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNTE4NDY1NT4gLSBIYW5nIHJlbmRlcmluZyB2
ZXJ5IGxhcmdlIHByb2dyZXNzaXZlIEpQRUcuIERlY29kaW5nIHByb2dyZXNzaXZlCi0gICAgICAg
ICAgICAvLyBpbWFnZXMgaGFuZ3MgZm9yIGEgdmVyeSBsb25nIHRpbWUgcmlnaHQgbm93LiBVbnRp
bCB0aGlzIGlzIGZpeGVkLCBkb24ndCBzdWItc2FtcGxlIHByb2dyZXNzaXZlIGltYWdlcy4gVGhp
cwotICAgICAgICAgICAgLy8gd2lsbCBjYXVzZSB0aGVtIHRvIGZhaWwgb3VyIGxhcmdlIGltYWdl
IGNoZWNrIGFuZCB0aGV5IHdvbid0IGJlIGRlY29kZWQuCi0gICAgICAgICAgICAvLyBGSVhNRTog
UmVtb3ZlIG9uY2UgdW5kZXJseWluZyBpc3N1ZSBpcyBmaXhlZCAoPHJkYXI6Ly9wcm9ibGVtLzUx
OTE0MTg+KQotICAgICAgICAgICAgcmV0dXJuICFpc1Byb2dyZXNzaXZlOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUludFNpemUgSW1hZ2VTb3VyY2U6OmZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikgY29uc3QKLXsKLSAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdl
U291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fZGVjb2RlciwgaW5kZXgsIGltYWdlU291cmNl
T3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsKS5nZXQoKSkpOwotCi0gICAgaWYgKCFwcm9wZXJ0aWVz
KQorICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAot
ICAgIGludCB3aWR0aCA9IDA7Ci0gICAgaW50IGhlaWdodCA9IDA7Ci0gICAgQ0ZOdW1iZXJSZWYg
bnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCks
IGtDR0ltYWdlUHJvcGVydHlQaXhlbFdpZHRoKTsKLSAgICBpZiAobnVtKQotICAgICAgICBDRk51
bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJndpZHRoKTsKLSAgICBudW0gPSAo
Q0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1h
Z2VQcm9wZXJ0eVBpeGVsSGVpZ2h0KTsKLSAgICBpZiAobnVtKQotICAgICAgICBDRk51bWJlckdl
dFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodCk7Ci0KLSAgICBpZiAoKGRlc2Ny
aXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRp
b24pICYmIG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMocHJvcGVydGllcy5nZXQoKSkudXNlc1dp
ZHRoQXNIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIEludFNpemUoaGVpZ2h0LCB3aWR0aCk7Cisg
ICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsKTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gbV9kZWNv
ZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwogCi0gICAgcmV0dXJuIEludFNpemUod2lk
dGgsIGhlaWdodCk7CisgICAgcmV0dXJuIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID09
IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uICYmIG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0
KCkgPyBzaXplLnRyYW5zcG9zZWRTaXplKCkgOiBzaXplOwogfQogCiBJbWFnZU9yaWVudGF0aW9u
IEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogewot
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1h
Z2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3Vy
Y2VPcHRpb25zKCkuZ2V0KCkpKTsKLSAgICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVy
biBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKLQotICAgIHJldHVybiBvcmllbnRhdGlvbkZyb21Q
cm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8g
bV9kZWNvZGVyLT5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpIDogRGVmYXVsdEltYWdlT3JpZW50
YXRpb247CiB9CiAKLUludFNpemUgSW1hZ2VTb3VyY2U6OnNpemUoSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAorSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgZGVzY3JpcHRpb24p
OworICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDApOwogfQogCi1ib29sIEltYWdlU291
cmNlOjpnZXRIb3RTcG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAorSW50U2l6ZSBJbWFnZVNv
dXJjZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0CiB7Ci0gICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQ
cm9wZXJ0aWVzQXRJbmRleChtX2RlY29kZXIsIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgp
KSk7Ci0gICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
bnQgeCA9IC0xLCB5ID0gLTE7Ci0gICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIpKTsK
LSAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUs
ICZ4KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbnVtID0gKENGTnVtYmVyUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WSIpKTsK
LSAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUs
ICZ5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHggPCAwIHx8IHkgPCAwKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBob3RTcG90ID0gSW50UG9pbnQoeCwgeSk7Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCwgUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pOwogfQogCi1zaXplX3QgSW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2Rl
ZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIGNvbnN0Citib29sIEltYWdlU291cmNlOjpnZXRIb3RT
cG90KEludFBvaW50JiBob3RTcG90KSBjb25zdAogewotICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNp
bmcgbWFsbG9jL2NhbGxvYyBjYWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCi0gICAgLy8g
QSBub24temVybyB2YWx1ZSBlbnN1cmVzIGNhY2hlZCBpbWFnZXMgd2l0aCBubyBkZWNvZGVkIGZy
YW1lcyBzdGlsbCBlbnRlcgotICAgIC8vIHRoZSBsaXZlIGRlY29kZWQgcmVzb3VyY2VzIGxpc3Qg
d2hlbiB0aGUgQ0dJbWFnZVNvdXJjZSBkZWNvZGVzIGltYWdlCi0gICAgLy8gcHJvcGVydGllcywg
YWxsb3dpbmcgdGhlIGNhY2hlIHRvIHBydW5lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBpbWFnZS4K
LSAgICAvLyBUaGlzIHZhbHVlIGlzIGxpa2VseSB0byBiZSBpbmFjY3VyYXRlIG9uIG90aGVyIHBs
YXRmb3JtcywgYnV0IHRoZSBvdmVyYWxsCi0gICAgLy8gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLgot
ICAgIHJldHVybiAxMzA4ODsKKyAgICByZXR1cm4gbV9kZWNvZGVyICYmIG1fZGVjb2Rlci0+Z2V0
SG90U3BvdChob3RTcG90KTsKIH0KLSAgICAKKwogaW50IEltYWdlU291cmNlOjpyZXBldGl0aW9u
Q291bnQoKQogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIGNBbmlt
YXRpb25Mb29wT25jZTsKLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRp
ZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllcyhtX2RlY29kZXIsIGltYWdl
U291cmNlT3B0aW9ucygpLmdldCgpKSk7Ci0gICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICBy
ZXR1cm4gY0FuaW1hdGlvbkxvb3BPbmNlOwotCi0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGdpZlByb3Bl
cnRpZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMu
Z2V0KCksIGtDR0ltYWdlUHJvcGVydHlHSUZEaWN0aW9uYXJ5KTsKLSAgICBpZiAoZ2lmUHJvcGVy
dGllcykgewotICAgICAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoZ2lmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUdJRkxvb3BDb3VudCk7
Ci0KLSAgICAgICAgLy8gTm8gcHJvcGVydHkgbWVhbnMgbG9vcCBvbmNlLgotICAgICAgICBpZiAo
IW51bSkKLSAgICAgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7Ci0KLSAgICAgICAg
aW50IGxvb3BDb3VudDsKLSAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlcklu
dFR5cGUsICZsb29wQ291bnQpOwotCi0gICAgICAgIC8vIEEgcHJvcGVydHkgd2l0aCB2YWx1ZSAw
IG1lYW5zIGxvb3AgZm9yZXZlci4KLSAgICAgICAgcmV0dXJuIGxvb3BDb3VudCA/IGxvb3BDb3Vu
dCA6IGNBbmltYXRpb25Mb29wSW5maW5pdGU7Ci0gICAgfQotCi0gICAgQ0ZEaWN0aW9uYXJ5UmVm
IHBuZ1Byb3BlcnRpZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHBy
b3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQTkdEaWN0aW9uYXJ5KTsKLSAgICBpZiAo
cG5nUHJvcGVydGllcykgewotICAgICAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUocG5nUHJvcGVydGllcywgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0
eUFQTkdMb29wQ291bnQpOwotICAgICAgICBpZiAoIW51bSkKLSAgICAgICAgICAgIHJldHVybiBj
QW5pbWF0aW9uTG9vcE9uY2U7Ci0KLSAgICAgICAgaW50IGxvb3BDb3VudDsKLSAgICAgICAgQ0ZO
dW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZsb29wQ291bnQpOwotICAgICAg
ICByZXR1cm4gbG9vcENvdW50ID8gbG9vcENvdW50IDogY0FuaW1hdGlvbkxvb3BJbmZpbml0ZTsK
LSAgICB9Ci0KLSAgICAvLyBUdXJucyBvdXQgd2UncmUgbm90IGFuIGFuaW1hdGVkIGltYWdlIGFm
dGVyIGFsbCwgc28gd2UgZG9uJ3QgYW5pbWF0ZS4KLSAgICByZXR1cm4gY0FuaW1hdGlvbk5vbmU7
CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXItPnJlcGV0aXRpb25Db3VudCgp
IDogY0FuaW1hdGlvbkxvb3BPbmNlOwogfQogCiBzaXplX3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291
bnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2RlY29kZXIgPyBDR0ltYWdlU291cmNlR2V0Q291
bnQobV9kZWNvZGVyKSA6IDA7CisgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJh
bWVDb3VudCgpIDogMDsKIH0KIAotQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVB
dEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQor
UGFzc05hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKLSAgICBp
ZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VB
dEluZGV4KG1fZGVjb2RlciwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xl
dmVsKS5nZXQoKSkpOwotCi0jaWYgUExBVEZPUk0oSU9TKQotICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS83MzcxMTk4PiAtIENvcmVHcmFwaGljcyBjaGFuZ2VkIHRoZSBkZWZhdWx0IGNhY2hpbmcgYmVo
YXZpb3VyIGluIGlPUyA0LjAgdG8ga0NHSW1hZ2VDYWNoaW5nVHJhbnNpZW50Ci0gICAgLy8gd2hp
Y2ggY2F1c2VkIGEgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBmb3IgdXMgc2luY2UgdGhlIGltYWdl
cyBoYWQgdG8gYmUgcmVzYW1wbGVkL3JlY3JlYXRlZCBldmVyeSB0aW1lIHdlIGNhbGxlZAotICAg
IC8vIENHQ29udGV4dERyYXdJbWFnZS4gV2Ugbm93IHRlbGwgQ0cgdG8gY2FjaGUgdGhlIGRyYXdu
IGltYWdlcy4gU2VlIGFsc28gPHJkYXI6Ly9wcm9ibGVtLzE0MzY2NzU1PiAtCi0gICAgLy8gQ29y
ZUdyYXBoaWNzIG5lZWRzIHRvIHVuLWRlcHJlY2F0ZSBrQ0dJbWFnZUNhY2hpbmdUZW1wb3Jhcnkg
c2luY2UgaXQncyBzdGlsbCBub3QgdGhlIGRlZmF1bHQuCi0jaWYgQ09NUElMRVIoQ0xBTkcpCi0j
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0jZW5kaWYKLSAgICBDR0ltYWdlU2V0
Q2FjaGluZ0ZsYWdzKGltYWdlLmdldCgpLCBrQ0dJbWFnZUNhY2hpbmdUZW1wb3JhcnkpOwotI2lm
IENPTVBJTEVSKENMQU5HKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCi0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQotCi0gICAgQ0ZTdHJpbmdSZWYgaW1hZ2VVVEkgPSBDR0lt
YWdlU291cmNlR2V0VHlwZShtX2RlY29kZXIpOwotICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1Jl
ZiB4Ym1VVEkgPSBDRlNUUigicHVibGljLnhiaXRtYXAtaW1hZ2UiKTsKLQotICAgIGlmICghaW1h
Z2VVVEkpCi0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7Ci0KLSAgICBpZiAoIUNGRXF1
YWwoaW1hZ2VVVEksIHhibVVUSSkpCi0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7Ci0g
ICAgCi0gICAgLy8gSWYgaXQgaXMgYW4geGJtIGltYWdlLCBtYXNrIG91dCBhbGwgdGhlIHdoaXRl
IGFyZWFzIHRvIHJlbmRlciB0aGVtIHRyYW5zcGFyZW50LgotICAgIGNvbnN0IENHRmxvYXQgbWFz
a2luZ0NvbG9yc1s2XSA9IHsyNTUsIDI1NSwgIDI1NSwgMjU1LCAyNTUsIDI1NX07Ci0gICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IG1hc2tlZEltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlV2l0
aE1hc2tpbmdDb2xvcnMoaW1hZ2UuZ2V0KCksIG1hc2tpbmdDb2xvcnMpKTsKLSAgICBpZiAoIW1h
c2tlZEltYWdlKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOwotCi0gICAgcmV0dXJu
IG1hc2tlZEltYWdlLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVj
b2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDog
bnVsbHB0cjsKIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QgaW5kZXgpCiB7CiAgICAgQVNTRVJUKGZyYW1lQ291bnQoKSk7Ci0gICAgcmV0dXJuIENH
SW1hZ2VTb3VyY2VHZXRTdGF0dXNBdEluZGV4KG1fZGVjb2RlciwgaW5kZXgpID09IGtDR0ltYWdl
U3RhdHVzQ29tcGxldGU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9kZWNvZGVyLT5m
cmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKIH0KIAogZmxvYXQgSW1hZ2VTb3VyY2U6OmZy
YW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWluaXRpYWxpemVk
KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZmxvYXQgZHVyYXRpb24gPSAwOwotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3Vy
Y2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRp
b25zKCkuZ2V0KCkpKTsKLSAgICBpZiAocHJvcGVydGllcykgewotICAgICAgICBDRkRpY3Rpb25h
cnlSZWYgZ2lmUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUdJRkRpY3Rpb25hcnkpOwotICAg
ICAgICBpZiAoZ2lmUHJvcGVydGllcykgewotICAgICAgICAgICAgaWYgKENGTnVtYmVyUmVmIG51
bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShnaWZQcm9wZXJ0aWVzLCBrQ0dJ
bWFnZVByb3BlcnR5R0lGVW5jbGFtcGVkRGVsYXlUaW1lKSkgewotICAgICAgICAgICAgICAgIC8v
IFVzZSB0aGUgdW5jbGFtcGVkIGZyYW1lIGRlbGF5IGlmIGl0IGV4aXN0cy4KLSAgICAgICAgICAg
ICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVyYXRpb24p
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZ2lmUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eUdJRkRl
bGF5VGltZSkpIHsKLSAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdGhlIGNsYW1wZWQg
ZnJhbWUgZGVsYXkgaWYgdGhlIHVuY2xhbXBlZCBmcmFtZSBkZWxheSBkb2VzIG5vdCBleGlzdC4K
LSAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBl
LCAmZHVyYXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5UmVmIHBuZ1Byb3BlcnRpZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdl
dFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQTkdEaWN0aW9uYXJ5KTsK
LSAgICAgICAgaWYgKHBuZ1Byb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGlmIChDRk51bWJlclJl
ZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocG5nUHJvcGVydGllcywg
V2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdVbmNsYW1wZWREZWxheVRpbWUpKQotICAgICAgICAg
ICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlv
bik7Ci0gICAgICAgICAgICBlbHNlIGlmIChDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUocG5nUHJvcGVydGllcywgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0
eUFQTkdEZWxheVRpbWUpKQotICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBr
Q0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyBNYW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdl
IGZsYXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCi0gICAgLy8gV2UgZm9sbG93IEZpcmVmb3gn
cyBiZWhhdmlvciBhbmQgdXNlIGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRo
YXQgc3BlY2lmeQotICAgIC8vIGEgZHVyYXRpb24gb2YgPD0gMTAgbXMuIFNlZSA8cmRhcjovL3By
b2JsZW0vNzY4OTMwMD4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzM2MDgyPgotICAgIC8vIGZv
ciBtb3JlIGluZm9ybWF0aW9uLgotICAgIGlmIChkdXJhdGlvbiA8IDAuMDExZikKLSAgICAgICAg
cmV0dXJuIDAuMWY7Ci0gICAgcmV0dXJuIGR1cmF0aW9uOworICAgIHJldHVybiBpbml0aWFsaXpl
ZCgpID8gbV9kZWNvZGVyLT5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCkgOiAwOwogfQogCiBi
b29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0g
ICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsgLy8gRklYTUU6IHdoeSBk
b2Vzbid0IHRoaXMgcmV0dXJuIHRydWU/Ci0KLSAgICBpZiAoIWZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoaW5kZXgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIENGU3RyaW5nUmVmIGltYWdl
VHlwZSA9IENHSW1hZ2VTb3VyY2VHZXRUeXBlKG1fZGVjb2Rlcik7Ci0KLSAgICAvLyBSZXR1cm4g
ZmFsc2UgaWYgdGhlcmUgaXMgbm8gaW1hZ2UgdHlwZSBvciB0aGUgaW1hZ2UgdHlwZSBpcyBKUEVH
LCBiZWNhdXNlCi0gICAgLy8gSlBFRyBkb2VzIG5vdCBzdXBwb3J0IGFscGhhIHRyYW5zcGFyZW5j
eS4KLSAgICBpZiAoIWltYWdlVHlwZSB8fCBDRkVxdWFsKGltYWdlVHlwZSwgQ0ZTVFIoInB1Ymxp
Yy5qcGVnIikpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBGSVhNRTogQ291bGQg
cmV0dXJuIGZhbHNlIGZvciBvdGhlciBub24tdHJhbnNwYXJlbnQgaW1hZ2UgZm9ybWF0cy4KLSAg
ICAvLyBGSVhNRTogQ291bGQgbWF5YmUgcmV0dXJuIGZhbHNlIGZvciBhIEdJRiBGcmFtZSBpZiB3
ZSBoYXZlIGVub3VnaCBpbmZvIGluIHRoZSBHSUYgcHJvcGVydGllcyBkaWN0aW9uYXJ5Ci0gICAg
Ly8gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgdHJhbnNwYXJlbnQgY29sb3Igd2FzIGRl
ZmluZWQuCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgJiYgbV9k
ZWNvZGVyLT5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CiB9CiAKIHVuc2lnbmVkIEltYWdl
U291cmNlOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKLSAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IGZyYW1l
U2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbihSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikpOwotICAgIHJldHVybiBmcmFtZVNpemUu
d2lkdGgoKSAqIGZyYW1lU2l6ZS5oZWlnaHQoKSAqIDQ7CisgICAgcmV0dXJuIGluaXRpYWxpemVk
KCkgPyBtX2RlY29kZXItPmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
KSA6IDA7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCmluZGV4IGJhNDE1OTdhYTEx
MDFkYjYyOTAyM2QyNzNiMjAwZTc4MWQzM2FhYzkuLjU5Y2MyYzliZThiM2ZmZTExMTg2YTY4NWQy
ZThjZjU5NGMxZDM5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcApAQCAtMjYzLDcgKzI2
Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1h
Z2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgICAgIGlmICghZGVjb2Rlci5mcmFt
ZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgwKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3Jl
YXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9pbWFnZVN1
cmZhY2UgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICAv
LyAxLiBGb3IgdGV4SW1hZ2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1dCwgYXNzdW1lIG5v
IFByZW11bHRpcGx5QWxwaGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFscGhhIHZhbHVlIGlz
IDB4RkYgZm9yIGVhY2ggcGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pb3MvSWNvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lvcy9JY29uSU9TLm1tCmluZGV4IDIxNTkxNWYyOGExOTIxNzIzOTZkNDZmMDg2ZDIyNDli
ODFkOWQ3NmEuLmUxODMzZDE5ODMwYjEwNzY2MzY2NGI2MTI4NDQ1OTdmODNmYzBhODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tCkBAIC0z
Myw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLUljb246Okljb24oQ0dJ
bWFnZVJlZiBpbWFnZSkKK0ljb246Okljb24oTmF0aXZlSW1hZ2VQdHIgaW1hZ2UpCiAgICAgOiBt
X2NnSW1hZ2UoaW1hZ2UpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggZmYwNzEzMWE2MWZjZWQwNDU4NmIzNzJkOWJhMjA3
OWE5ODczYzM4Yi4uZmEwMTFhYTg4MTYzMDMwMDA5NDQ5OGViYzBmZmNhOWZiOWMzMDM0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpA
QCAtOTUsNyArOTUsNyBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRh
dGlvbigpCiAKICAgICBWZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0lt
YWdlID0gZnJhbWVBdEluZGV4KGkpOworICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFt
ZUltYWdlQXRJbmRleChpKS5nZXQoKTsKICAgICAgICAgaWYgKGNnSW1hZ2UpCiAgICAgICAgICAg
ICBpbWFnZXMuYXBwZW5kKGNnSW1hZ2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA4MzVlY2YzZjRmZWVl
YjhhMGRmYThkMzY5NzMxMjhmM2I4MDdiOTI2Li40NzA3M2MwZWQ2OTBlMDQ0ZmZiM2E5NGU1ODZm
MjYwMjc5ZDFjNGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlQ0dXaW4uY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUltYWdl
QXRJbmRleChpKS5nZXQoKTsKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkp
IHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAg
ICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAppbmRleCAyOWEyMDIzZGI2
M2E5MTQzNGMzOTQ4ZWFhNTUyM2JiNjFmZTgxMDc1Li45N2VkMDk3OTM1YzUxZmMyMGE4NDVjOTU4
ZTE1Njk4ZDIwMDBkYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0
eHQsIGNvbnN0IEZsb2F0CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUF0SW5kZXgoaSk7CisgICAgICAgIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChpKTsKICAgICAg
ICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCmluZGV4IGJiYWU5MWZhOGUzYzA2NjQ0N2M0
NjRkNmUzMTIwMGRlMjQ4Y2U4M2YuLjkxYzkyZTkxMmNjMjE4OTJmNjU5ZTY3YTk1OTU3MWZiZGQw
MDI3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpA
QCAtOTEsNyArOTEsNyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaQogICAgIGlmIChpczxCaXRt
YXBJbWFnZT4oKmltYWdlKSkgewogICAgICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
OwogICAgICAgICBCaXRtYXBJbWFnZSYgYml0bWFwSW1hZ2UgPSBkb3duY2FzdDxCaXRtYXBJbWFn
ZT4oKmltYWdlKTsKLSAgICAgICAgSW50U2l6ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0g
Yml0bWFwSW1hZ2Uuc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbihkZXNjcmlwdGlvbik7CisgICAg
ICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IGJpdG1hcEltYWdlLnNpemVS
ZXNwZWN0aW5nT3JpZW50YXRpb24oKTsKIAogICAgICAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVj
dEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKICAgICAgICAg
ICAgIG9yaWVudGF0aW9uID0gYml0bWFwSW1hZ2Uub3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273992</attachid>
            <date>2016-03-14 11:14:18 -0700</date>
            <delta_ts>2016-04-15 22:19:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160314111406.patch</filename>
            <type>text/plain</type>
            <size>120320</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2FjOThmYzYxZmI4ZmUx
ZTAxYTY5MWNjNzg0OTM0NmU1YTkwNzI1MC4uYjc4ODEzMTA1NDYzMTYzOGNiYTlhZGVmMWJjZmRl
MTAyOWEzNWY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzNCBAQAorMjAxNi0wMy0xNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIFJlbmFt
ZSBGcmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
cGxhbiBpcyB0byBoYXZlIGNhY2hpbmcgdGhlIEltYWdlRnJhbWVEYXRhIGJlIGRvbmUgYnkgdGhl
IEltYWdlU291cmNlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxh
dGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1XaW5DYWlyby5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjp1cGRhdGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJh
bWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVP
cmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNr
Rm9yU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNTb2xpZENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjptYXlGaWxsV2l0aFNvbGlkQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNvbGlkQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmR1bXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OkZyYW1lRGF0
YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6On5GcmFtZURhdGEpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6c29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZURhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpJbWFnZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
fkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzdGF0
dXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZURhdGE6OnNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNr
Rm9yU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNs
ZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFn
ZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkZXRlcm1pbmVNaW5pbXVtU3Vic2FtcGxpbmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpnZXRDR0ltYWdlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRy
YXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1h
Z2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6IERl
bGV0ZWQuCisKKzIwMTYtMDMtMTMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFw
cGxlLGNvbT4KKworICAgICAgICBDcmVhdGUgYSBDRyBJbWFnZURlY29kZXIgY2xhc3MgaW5zdGVh
ZCBvZiBkZWZpbmluZyBpdCBhcyBDR0ltYWdlU291cmNlUmVmIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDIyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgaW1hZ2UgZGVjb2RpbmcgY29k
ZSBmcm9tIEltYWdlU291cmNlQ0cuY3BwIG91dCB0byBhIG5ldyBjbGFzcyBuYW1lZAorICAgICAg
ICBJbWFnZURlY29kZXIuIFRoZSBwdXJwb3NlIG9mIHRoaXMgc3BsaXQgaXMgdG8gaGF2ZSB0aGUg
Q0cgSW1hZ2VTb3VyY2Ugc2ltaWxhcgorICAgICAgICB0byB0aGUgbm9uZSBDRyBJbWFnZVNvdXJj
ZSB3aGVyZSB0aGVyZSBpcyBhIHNlcGFyYXRlIGNsYXNzIGZvciBkZWNvZGluZy4gVGhlCisgICAg
ICAgIHBsYW4gaXMgdG8gbWVyZ2UgdGhlIEltYWdlU291cmNlLmNwcCBhbmQgSW1hZ2VTb3VyY2VD
Ry5jcHAgaW4gb25lIGZpbGUgc28KKyAgICAgICAgZGVjaWRpbmcgd2hldGhlciB0aGUgZGVjb2Rp
bmcgc2hvdWxkIGhhcHBlbiBzeW5jaHJvbm91c2x5IG9yIGFzeW5jaHJvbm91c2x5CisgICAgICAg
IGNhbiBoYXBwZW4gaW4gb25lIHBsYWNlIGFuZCB0aGUgY2FjaGluZyBvZiB0aGUgZnJhbWVzIGNh
biBiZSBoYW5kbGVkIGJ5IHRoZQorICAgICAgICBJbWFnZVNvdXJjZSBhcyB3ZWxsLgorCisgICAg
ICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnVwZGF0
ZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNpemVSZXNwZWN0aW5nT3Jp
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdElu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkdW1wKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpzaXplUmVzcGVjdGlu
Z09yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZVNpemVB
dEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFn
ZVNvdXJjZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VTb3VyY2VPcHRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OnNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik7CisgICAg
ICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJSZWxlYXNlKTsKKyAgICAgICAgKFdlYkNvcmU6Om9y
aWVudGF0aW9uRnJvbVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzdWJzYW1w
bGluZ0xldmVsRm9yU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpieXRl
c0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6Z2V0SG90U3BvdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2Rlcjo6b3JpZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjphbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6On5JbWFnZURl
Y29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpmaWxlbmFtZUV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c3Vi
c2FtcGxpbmdMZXZlbEZvclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpi
eXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3Jp
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVm
ZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNoYXJl
ZEJ1ZmZlclJlbGVhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6
OkltYWdlU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlU291
cmNlT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbWFnZVNvdXJjZU9wdGlv
bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmluaXRpYWxpemVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJ
bmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGV0ZXJtaW5lTWluaW11bVN1YnNhbXBsaW5nTGV2ZWwpOgor
CisyMDE2LTAzLTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+
CisKKyAgICAgICAgQ2hhbmdlIE5hdGl2ZUltYWdlUHRyIGZvciBDRyB0byBiZSBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTQxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEhhdmluZyBOYXRpdmVJbWFnZVB0ciBhcyBhIHJhdyBwb2ludGVyIG1ha2VzIG1hbmFnaW5n
IHRoZSBsaWZlIGN5Y2xlIG9mCisgICAgICAgIHRoZSBDR0ltYWdlUmVmIGhhcmQuIEEgbG90IG9m
IHdvcmtzIHdhcyBkb25lIHRvIG1ha2Ugc3VyZSB0aGUgQ0cgcG9pbnRlcgorICAgICAgICBpcyBt
YWludGFpbmVkIGNvcnJlY3RseS4gSXQgd2FzIGFsc28gbm90IHBvc3NpYmxlIHRvIG1vdmUgYSBG
cmFtZURhdGEgc2luY2UKKyAgICAgICAgY2FsbGluZyB0aGUgZGVzdHJ1Y3RvciB3YXMgcmVsZWFz
aW5nIHRoZSBDR0ltYWdlUmVmLgorCisgICAgICAgIEkgYW0gZ29pbmcgdG8gZm9sbG93IHRoaXMg
bmFtaW5nIGNvbnZlbnRpb246CisgICAgICAgIDEuIEFuIEltYWdlIG9iamVjdCBjYW4gaGF2ZSBv
bmUgb3IgbW9yZSBGcmFtZURhdGEuIEEgRnJhbWVEYXRhIGNhbiBiZSBuYW1lZAorICAgICAgICAg
ICBmb3Igc2hvcnRuZXNzIGFzICJmcmFtZSIsICJtX2ZyYW1lcyIsIGV0Yy4KKyAgICAgICAgMi4g
QSBGcmFtZURhdGEgY2FuIGhhdmUgemVybyBvciBvbmUgTmF0aXZlSW1hZ2VQdHIuIEEgTmF0aXZl
SW1hZ2VQdHIgY2FuCisgICAgICAgICAgIGJlIG5hbWVkIGFzICJpbWFnZSIsICJtX2ltYWdlIiwg
ZXRjLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVuc3VyZUZy
YW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJ
bmRleCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVBdElu
ZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5o
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ljb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNy
ZWF0ZUZyYW1lQXRJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVB0
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNs
ZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4
dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9C
aXRtYXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFt
ZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y29weVVuc2Nh
bGVkRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVBdEluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2lvcy9JY29uSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6SWNvbjo6SWNv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisKIDIwMTYtMDMt
MTIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbRm9ybXM6IGZv
Y3VzXSBmb2N1cyByaW5ncyBhcm91bmQgdGV4dCBmaWVsZHMgZG8gbm90IGZvbGxvdyBjb250b3Vy
IChib3JkZXItcmFkaXVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2ZGM1OGIyNzhkOGMwYWMw
M2U5NzA0MjFlMTFlNDJiOTU5YTY4NmQ2Li5lODg3OTIwMzZiN2MzZDY4ZTIzMjc1YjhlZWU5MjNm
MDZlYzJkYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjIxOCw2ICsyMjE4LDcgQEAgc2V0
KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lTT1ZUVEN1ZS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFBvaW50LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCBlNTIwOWNiMjBjZjAzMzg3YTI1
MjY0M2RmNGUwYjIxNTE0OTIwNGY3Li43YjM2N2E3M2FjOWUxNWJkOTVjODljOTdhMzZhMGYwMjVm
NzI4MDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTcxLDYgKzcx
LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckRhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0dXaW4uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZWNlMmM1MzA5MWE1NmNkOTMzMDZlNWJhYmZhNDg4
NjYzNGYyNTlmOS4uYWQ3YzdmNGNjMjc2NjRlNWNlNWI1MTg2OGFjOTc0MmE3OGQ5OWM4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEyMyw2ICsxMjMsNyBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCiAg
ICAgcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAogCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFr
ZQppbmRleCBlNmM4N2IyZDdlOTQxZTM0OWE2N2FhNmM2ODNhYTM0ZGM2MGFkYzFmLi45NDk4NDk1
M2QzOWE4YjVlN2ViYjBjZTliNTIyMjJmODUyYzNmMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZQpAQCAtOTQsNiArOTQsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZURhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggODM1YjlhYTIyNGFhOWVhYWVlMDQ2MjMzOTdlOTkwMTZlOWY3ZWViZi4uZGFj
ZGE1NjkxYTY1YzY2NTYwNjNhNGMwNzA2YzEwYTBlZmI2MjE0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKQEAgLTQwMCw2ICs0MDAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ludFBvaW50Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdp
bkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQppbmRl
eCAzOGEwMjhjNWI4OTFiY2IxZmRkZTJkZGViMmEzMWJmODEzZDUzOGNkLi4yNDhjODlhMGIwNTdk
MWU1ZDZlNDQxZWViYzRjMzhmZjgyNGYyMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fp
cm8uY21ha2UKQEAgLTM5LDYgKzM5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0
YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwMzA3YmEzOGZmMGYzYTRjNDcxYjlkNDI5MTQ2MTYyYTk1OWVlNzY2
Li5kMTNlOWI4MzkwYTFiZDBiMjE3YzQyMzg4NDNjZTRiZDRjZDBiZTBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjkxLDYg
KzIyOTEsMTAgQEAKIAkJNTNFRjc2NkMxNjUzMTk5NDAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9z
LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLzsg
fTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAz
OTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5
MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1
NTlCQjg3OTFDOTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUJCODc3MUM5NjQ2NTgwMDI0MTND
RCAvKiBJbWFnZURlY29kZXIuY3BwICovOyB9OworCQk1NTlCQjg3QTFDOTY0NjU4MDAyNDEzQ0Qg
LyogSW1hZ2VEZWNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTlCQjg3ODFDOTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmggKi87IH07
CisJCTU1OUJCODdEMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTlCQjg3QjFDOTZCMkM4
MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuY3BwICovOyB9OworCQk1NTlCQjg3RTFDOTZCMkM5
MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUJCODdDMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1l
RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTU3MkE3RjIxMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyQTdGMjAxQzZFNTcxOTAwOUM2
MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggKi87IH07CiAJCTU3MkE3RjIzMUM2RTVBNjYwMDlDNjE0
OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2su
Y3BwICovOyB9OwogCQk1ODAzNzE2MTFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgwMzcxNUYxQTY2
RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmNwcCAqLzsgfTsKQEAgLTk4NzUsNiArOTg3OSwxMCBA
QAogCQk1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVh
bGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk1NTlCQjg3NzFDOTY0NjU4MDAyNDEzQ0QgLyogSW1h
Z2VEZWNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
RGVjb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1OUJCODc4MUM5NjQ2
NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1OUJC
ODdCMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTU1OUJCODdDMUM5NkIyQzgwMDI0MTNDRCAvKiBJbWFnZUZyYW1lRGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUZyYW1lRGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUQ0MDhGNzFBN0M2MzE4MDBDNzg0NTAgLyog
U1ZHSW1hZ2VDbGllbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0lt
YWdlQ2xpZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMDFDNkU1
NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2ltdWxhdGVkQ2xpY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTcyQTdGMjIxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXVsYXRlZENsaWNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxODMzLDYgKzIxODQxLDggQEAKIAkJCQkyMjkyQjI3QjEz
NTY2Njk0MDBDRjExRUYgLyogSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwICovLAogCQkJCTIyQkQ5Rjgw
MTM1MzY0RkUwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGFDRy5oICovLAogCQkJCUIyNzUzNTMw
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNwcCAqLywKKwkJCQk1NTlCQjg3NzFDOTY0NjU4
MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmNwcCAqLywKKwkJCQk1NTlCQjg3ODFDOTY0NjU4MDAy
NDEzQ0QgLyogSW1hZ2VEZWNvZGVyLmggKi8sCiAJCQkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRG
IC8qIEltYWdlU291cmNlQ0cuY3BwICovLAogCQkJCTRCMzQ4MDkyMEVFRjUwRDQwMEFDMUI0MSAv
KiBJbWFnZVNvdXJjZUNHLmggKi8sCiAJCQkJNEIzNDgwOTEwRUVGNTBENDAwQUMxQjQxIC8qIElt
YWdlU291cmNlQ0dNYWMubW0gKi8sCkBAIC0yMTk5NSw2ICsyMjAwNSw4IEBACiAJCQkJNDNEMjU5
NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBC
MzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVD
MDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJCQkJNTU5QkI4N0IxQzk2QjJDODAw
MjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmNwcCAqLywKKwkJCQk1NTlCQjg3QzFDOTZCMkM4MDAy
NDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQw
ODEgLyogSW1hZ2VPYnNlcnZlci5oICovLAogCQkJCUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAv
KiBJbWFnZU9yaWVudGF0aW9uLmNwcCAqLywKIAkJCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEg
LyogSW1hZ2VPcmllbnRhdGlvbi5oICovLApAQCAtMjU0NzUsNiArMjU0ODcsNyBAQAogCQkJCTk3
QkM2QTI0MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFMzM3MUEyMTY3QzExRDQwMEVEQjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI1MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFz
ZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTlCQjg3RTFDOTZCMkM5MDAyNDEzQ0Qg
LyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI4MTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI5
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFMDlEQjQ5MTY5RTJENkUwMDYyMjU1NyAvKiBEYXRhYmFzZUVycm9yLmggaW4gSGVhZGVycyAq
LywKQEAgLTI2ODEyLDYgKzI2ODI1LDcgQEAKIAkJCQlGREExNUVDRTEyQjAzRjYxMDAzQTU4M0Eg
LyogSlNTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RkEzN0VGQjEx
NzJGREE2MDBDNENENTUgLyogSlNTY3JpcHRQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
RkEzN0VGRDExNzJGREE2MDBDNENENTUgLyogSlNTY3JpcHRQcm9maWxlTm9kZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTU5QkI4N0ExQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0VEMDZBRDExQzc3NzU0ODAwRkRGQUYxIC8qIEpTU2VjdXJpdHlQ
b2xpY3lWaW9sYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEQTY0RDgxQjk3NUNG
MjAwOUM0Mzg3IC8qIEpTU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q5REUxN0Ix
N0FBQzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI5
MjAzLDYgKzI5MjE3LDcgQEAKIAkJCQlCMjc1MzU2NjBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDRjMzMjQwRjJCOTcxNTAwNEI2Nzk1IC8qIENvbG9y
Q0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCQTc2QzkxMUQyMEU0NzAwNEMyMDFDIC8qIENv
bG9yRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NTlCQjg3OTFDOTY0NjU4MDAyNDEzQ0Qg
LyogSW1hZ2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjk5MzVEMTdBMURENTgw
MEJDRTg4MCAvKiBDb2xvcklucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU3
NzBCMDUzODE0MDAyQ0U2NEYgLyogQ29sb3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0M0VE
RDY3RTFCNDg1REJGMDA2NDBFNzUgLyogQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXQuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yOTU5OCw2ICsyOTYxMyw3IEBACiAJCQkJODUzQkY0REMwQUJCNkI1NTAw
ODY0N0JCIC8qIERPTU5vZGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTUyNkMzODBBQjBBMTdF
MDAwMzAyRUEgLyogRE9NTm9kZUl0ZXJhdG9yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVBQ0FB
OEUwQTlCNzU5QzAwNjcxRTkwIC8qIERPTU5vZGVMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTU5QkI4N0QxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg1NkM4QUU1MEE5MTI2NDkwMDVDNjg3QiAvKiBET01PYmplY3QubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4NUM3RjVEMTBBQUZCOEQ5MDA0MDE0REQgLyogRE9NT3ZlcmZsb3dFdmVu
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxMjg0QkQ1MTA0NEEwMUUwMEVBRUI1MiAvKiBET01Q
YWdlVHJhbnNpdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBmMzc4NzUyMWRkZmZmNjgyYmQ4OGU2NDcy
Y2FmMDYyNWUzZjA0NTQ0Li45YTE0NzU3ODgzN2ZjZGUxMzEwZDFhZDEwNjIyYjdiYjcwNjg0YWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTI3
OCw3ICsyNzgsNyBAQCBMYXlvdXRTaXplIENhY2hlZEltYWdlOjppbWFnZVNpemVGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBmbG9hdAogICAgIGlmIChyZW5kZXJlciAm
JiBpczxCaXRtYXBJbWFnZT4oKm1faW1hZ2UpKSB7CiAgICAgICAgIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHJlbmRlcmVyLT5zaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpLCByZW5kZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkp
OwogICAgICAgICBpZiAob3JpZW50YXRpb25EZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICAgICAgaW1hZ2VTaXpl
ID0gTGF5b3V0U2l6ZShkb3duY2FzdDxCaXRtYXBJbWFnZT4oKm1faW1hZ2UpLnNpemVSZXNwZWN0
aW5nT3JpZW50YXRpb24ob3JpZW50YXRpb25EZXNjcmlwdGlvbikpOworICAgICAgICAgICAgaW1h
Z2VTaXplID0gTGF5b3V0U2l6ZShkb3duY2FzdDxCaXRtYXBJbWFnZT4oKm1faW1hZ2UpLnNpemVS
ZXNwZWN0aW5nT3JpZW50YXRpb24oKSk7CiAgICAgfQogI2Vsc2UKICAgICBpZiAoaXM8Qml0bWFw
SW1hZ2U+KCptX2ltYWdlKSAmJiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPnNob3VsZFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggOTk5NDY1ZWEzOTA2OTdj
YmUwMGZlNmZhODgzOGMxMzhlNTQ0N2ExNy4uODQ2YzBkYzkzODRlNzVkYmEwODIwYzI4MGZiNjQx
Y2U4YTA4ZjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwCkBAIC0yMjUsOCArMjI1LDYgQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hl
KE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3QKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBDYWNoZWRJbWFnZTo6TWFudWFs
bHlDYWNoZWQsIHNlc3Npb25JRCk7CiAKLSAgICAvLyBBY3R1YWwgcmVsZWFzZSBvZiB0aGUgQ0dJ
bWFnZVJlZiBpcyBkb25lIGluIEJpdG1hcEltYWdlLgotICAgIENGUmV0YWluKGltYWdlKTsKICAg
ICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KCZkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAg
IGNhY2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7
CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBmYWYwZjg2OTYyYzNmYjY1Nzc3
NDViZmFmNzViNGM4NGQ4MGNjMDYwLi5jYjViMWM5YTQxODE2OGVmN2ZlNzMxOWVjOGMxMjM2NjRh
ZWRjZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCkBAIC00Nyw5ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQml0bWFw
SW1hZ2U6OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uo
b2JzZXJ2ZXIpCi0gICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsKDApCi0gICAgLCBtX2lt
YWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkKLSAgICAsIG1fc2hvdWxkUmVzcGVjdEltYWdl
T3JpZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRGcmFtZSgwKQogICAgICwgbV9yZXBl
dGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3JlcGV0aXRpb25Db3VudFN0YXR1
cyhVbmtub3duKQpAQCAtNjYsMTMgKzYzLDEwIEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICNlbHNlCiAgICAgLCBtX2FsbG93U3Vic2FtcGxpbmco
ZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVj
a2VkRm9yU29saWRDb2xvcihmYWxzZSkKICAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQoZmFsc2Up
CiAgICAgLCBtX2FsbERhdGFSZWNlaXZlZChmYWxzZSkKICAgICAsIG1faGF2ZVNpemUoZmFsc2Up
CiAgICAgLCBtX3NpemVBdmFpbGFibGUoZmFsc2UpCi0gICAgLCBtX2hhc1VuaWZvcm1GcmFtZVNp
emUodHJ1ZSkKICAgICAsIG1faGF2ZUZyYW1lQ291bnQoZmFsc2UpCiAgICAgLCBtX2FuaW1hdGlv
bkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAoZmFsc2UpCiB7CkBAIC05Niw3ICs5MCw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIoZG91YmxlIGRlbGF5KQogICAgIG1fZnJhbWVUaW1lci0+
c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0KIAotYm9vbCBCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lQXRJ
bmRleChzaXplX3QgaW5kZXgpCitib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNCw3ICs5OCw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6Omhh
dmVGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5z
aXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTEyNSw3
ICsxMTksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsKQogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBk
YXRhKSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEu
CiAgICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7
Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCisgICAgICAgIGlmIChtX2Zy
YW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSkpCiAgICAgICAg
ICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOwogICAgIH0KIApAQCAtMTU4LDgg
KzE1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5
KGJvb2wgZGVzdHJveUFsbCkKIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5k
Tm90aWZ5KHVuc2lnbmVkIGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU291cmNlIGNsZWFyZWRT
b3VyY2UpCiB7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICBtX2NoZWNrZWRGb3JT
b2xpZENvbG9yID0gZmFsc2U7CisgICAgbV9zb2xpZENvbG9yVmFsdWUgPSBUcmlTdGF0ZTo6VW5j
aGVja2VkOwogICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKIAogICAgIEFTU0VSVChtX2Rl
Y29kZWRTaXplID49IGZyYW1lQnl0ZXNDbGVhcmVkKTsKQEAgLTE4MywxMSArMTc2LDkgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVz
KQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0u
bV9mcmFtZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdM
ZXZlbCk7CisgICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVN
ZXRhZGF0YUFuZEZyYW1lKSB7CisgICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlID0gbV9z
b3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwog
ICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsID0gc3Vic2FtcGxpbmdM
ZXZlbDsKLSAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4XS5tX2Zy
YW1lKQotICAgICAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAgICAgfQogCiAgICAgbV9m
cmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3NvdXJjZS5vcmllbnRhdGlvbkF0SW5kZXgo
aW5kZXgpOwpAQCAtMjAwLDExICsxOTEsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1l
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAg
IG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoaW5kZXgpOwogICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5m
cmFtZUJ5dGVzQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiAKLSAgICBjb25zdCBJ
bnRTaXplIGZyYW1lU2l6ZShpbmRleCA/IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpIDogbV9zaXplKTsKLSAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwg
JiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKLSAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0g
ZmFsc2U7Ci0KLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpIHsKKyAgICBpZiAobV9m
cmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKICAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZlQ2Fz
dDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOwogICAgICAgICBtX2RlY29kZWRT
aXplICs9IGRlbHRhQnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxseS1kZWNvZGVkIGZyYW1lIHdp
bGwgc3Vic3VtZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1c2VkCkBAIC0yMzYsMTYgKzIy
MywxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkaWREZWNvZGVQcm9wZXJ0aWVzKCkgY29uc3QKICAg
ICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgZGVsdGFCeXRl
cyk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OnVwZGF0ZVNpemUoSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAordm9pZCBCaXRtYXBJbWFnZTo6dXBkYXRlU2l6
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NpemVBdmFpbGFibGUgfHwgbV9oYXZlU2l6ZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9zaXplID0gbV9zb3VyY2Uuc2l6ZShkZXNjcmlwdGlvbik7
Ci0gICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zb3VyY2Uuc2l6ZShJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24oUmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGRlc2NyaXB0aW9u
LmltYWdlT3JpZW50YXRpb24oKSkpOwotCi0gICAgbV9pbWFnZU9yaWVudGF0aW9uID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAgbV9z
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNj
cmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICBtX3NpemUgPSBtX3NvdXJj
ZS5zaXplKCk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zb3VyY2Uuc2l6
ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpOwogCiAgICAgbV9oYXZlU2l6ZSA9IHRydWU7CiAKQEAg
LTI1OSw5ICsyNDMsOSBAQCBGbG9hdFNpemUgQml0bWFwSW1hZ2U6OnNpemUoKSBjb25zdAogICAg
IHJldHVybiBtX3NpemU7CiB9CiAKLUludFNpemUgQml0bWFwSW1hZ2U6OnNpemVSZXNwZWN0aW5n
T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25z
dAorSW50U2l6ZSBCaXRtYXBJbWFnZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbigpIGNvbnN0
CiB7Ci0gICAgdXBkYXRlU2l6ZShkZXNjcmlwdGlvbik7CisgICAgdXBkYXRlU2l6ZSgpOwogICAg
IHJldHVybiBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CiB9CiAKQEAgLTMwMSw3ICsyODUs
NyBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkK
ICAgICAgICAgLy8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKICAgICAgICAg
dW5zaWduZWQgZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKICAgICAgICAg
aWYgKG1fZnJhbWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxl
dGUpCi0gICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIo
dHJ1ZSkgPyBmcmFtZUJ5dGVzIDogMCk7CisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCAr
PSAobV9mcmFtZXNbaV0uY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSkgPyBmcmFt
ZUJ5dGVzIDogMCk7CiAgICAgfQogICAgIGRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeShmcmFtZUJ5
dGVzQ2xlYXJlZCwgQ2xlYXJlZFNvdXJjZTo6Tm8pOwogI2Vsc2UKQEAgLTMwOSw3ICsyOTMsNyBA
QCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAg
ICBpbnQgZGVsdGFCeXRlcyA9IDA7CiAgICAgaWYgKCFtX2ZyYW1lcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0ubV9mcmFtZUJ5
dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0uY2xlYXIodHJ1
ZSkpIHsKKyAgICAgICAgaWYgKG1fZnJhbWVzW21fZnJhbWVzLnNpemUoKSAtIDFdLmNsZWFyKElt
YWdlRnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpKSB7CiAgICAgICAgICAgICBkZWx0YUJ5dGVzICs9
IGJ5dGVzOwogICAgICAgICAgICAgZGVsdGFCeXRlcyArPSBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6
ZTsKICAgICAgICAgICAgIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplID0gMDsKQEAgLTM0MCw3ICsz
MjQsNiBAQCBib29sIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZl
ZCkKICNlbmRpZgogCiAgICAgbV9oYXZlRnJhbWVDb3VudCA9IGZhbHNlOwotICAgIG1faGFzVW5p
Zm9ybUZyYW1lU2l6ZSA9IHRydWU7CiAgICAgcmV0dXJuIGlzU2l6ZUF2YWlsYWJsZSgpOwogfQog
CkBAIC0zNzksMjYgKzM2MiwyNiBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2Fj
aGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAg
IHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tp
bmRleF0ubV9mcmFtZSkKLSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRh
T25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKKyAgICAgICAgfHwgKGZy
YW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFuZEZyYW1lICYm
ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBJ
bWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2
ZU1ldGFkYXRhKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsK
IAogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6
OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjYWxlSGludCkK
K1Bhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2FsZUhpbnQpCiB7CiAgICAgaWYgKGluZGV4ID49
IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBTdWJzYW1wbGlu
Z0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSBzdGQ6Om1pbihtX3NvdXJjZS5zdWJzYW1wbGluZ0xl
dmVsRm9yU2NhbGUocHJlc2VudGF0aW9uU2NhbGVIaW50KSwgbV9taW5pbXVtU3Vic2FtcGxpbmdM
ZXZlbCk7CisgICAgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0gbV9zb3VyY2Uu
c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKHByZXNlbnRhdGlvblNjYWxlSGludCwgbV9tYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbCk7CiAKICAgICAvLyBXZSBtYXkgaGF2ZSBjYWNoZWQgYSBmcmFtZSB3
aXRoIGEgaGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8K
ICAgICAvLyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgotICAgIGlmIChpbmRleCA8IG1f
ZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSAmJiBzdWJzYW1wbGluZ0xl
dmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgeworICAgIGlmIChpbmRl
eCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSAmJiBzdWJzYW1w
bGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgewogICAgICAg
ICAvLyBJZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQsIGJ1dCBhdCB0b28gc21hbGwgYSBz
aXplLCByZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KICAgICAgICAgaW50IHNpemVDaGFuZ2Ug
PSAtbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhd
LmNsZWFyKHRydWUpOworICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xlYXIoSW1hZ2VGcmFtZUNh
Y2hpbmc6OkNhY2hlTm9uZSk7CiAgICAgICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKICAg
ICAgICAgbV9kZWNvZGVkU2l6ZSArPSBzaXplQ2hhbmdlOwogICAgICAgICBpZiAoaW1hZ2VPYnNl
cnZlcigpKQpAQCAtNDA2LDE1ICszODksMTUgQEAgUGFzc05hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpmcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TY2EKICAg
ICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBmcmFtZSB5ZXQsIGRvIHNvLgot
ICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2Zy
YW1lKQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBDYWNoZU1l
dGFkYXRhQW5kRnJhbWUpOworICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1f
ZnJhbWVzW2luZGV4XS5tX2ltYWdlKQorICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKIAot
ICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZTsKKyAgICByZXR1cm4gbV9mcmFtZXNb
aW5kZXhdLm1faW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRl
eCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRl
eCwgSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsKQEAgLTQyMiw3
ICs0MDUsNyBAQCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVf
dCBpbmRleCkKIAogZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVf
dCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0
YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJh
bWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1
cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247CkBAIC00MzAsMTIgKzQxMywxMiBAQCBmbG9h
dCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogCiBQYXNz
TmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkK
IHsKLSAgICByZXR1cm4gZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICByZXR1cm4g
ZnJhbWVJbWFnZUF0SW5kZXgoY3VycmVudEZyYW1lKCkpOwogfQogCiBib29sIEJpdG1hcEltYWdl
OjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVG
cmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVG
cmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRh
ZGF0YSkKQEAgLTQ1MSw3ICs0MzQsNyBAQCBib29sIEJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVL
bm93blRvQmVPcGFxdWUoKQogCiBJbWFnZU9yaWVudGF0aW9uIEJpdG1hcEltYWdlOjpmcmFtZU9y
aWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlz
Q2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlz
Q2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSkpCiAgICAgICAg
IHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKIAogICAgIGlmIChtX2ZyYW1lc1tpbmRl
eF0ubV9oYXZlTWV0YWRhdGEpCkBAIC02NzgsMTkgKzY2MSw0OSBAQCBib29sIEJpdG1hcEltYWdl
OjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oQW5pbWF0aW9uQWR2YW5jZW1lbnQgYWR2YW5jZW1l
bnQpCiAKICAgICByZXR1cm4gYWR2YW5jZWRBbmltYXRpb247CiB9CisgICAgCit2b2lkIEJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQoreworICAgIG1fc29saWRDb2xvclZhbHVlID0g
VHJpU3RhdGU6Ok5vOworICAgIAorICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKCFoYXZlRnJhbWVJbWFnZUF0SW5kZXgoMCkpIHsKKyAgICAg
ICAgSW50U2l6ZSBzaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKKyAgICAg
ICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZCgw
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKCFtX2ZyYW1lcy5z
aXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoT3B0aW9uYWw8Q29sb3I+IGNv
bG9yID0gbV9mcmFtZXNbMF0uc29saWRDb2xvcigpKSB7CisgICAgICAgIG1fc29saWRDb2xvciA9
IGNvbG9yLnZhbHVlKCk7CisgICAgICAgIG1fc29saWRDb2xvclZhbHVlID0gVHJpU3RhdGU6Olll
czsKKyAgICB9Cit9CiAKLWJvb2wgQml0bWFwSW1hZ2U6Om1heUZpbGxXaXRoU29saWRDb2xvcigp
Citib29sIEJpdG1hcEltYWdlOjppc1NvbGlkQ29sb3IoKQogewotICAgIGlmICghbV9jaGVja2Vk
Rm9yU29saWRDb2xvciAmJiBmcmFtZUNvdW50KCkgPiAwKSB7CisgICAgaWYgKG1fc29saWRDb2xv
clZhbHVlID09IFRyaVN0YXRlOjpVbmNoZWNrZWQgJiYgZnJhbWVDb3VudCgpID4gMCkgewogICAg
ICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKLSAgICAgICAgQVNTRVJUKG1fY2hlY2tlZEZvclNv
bGlkQ29sb3IpOworICAgICAgICBBU1NFUlQobV9zb2xpZENvbG9yVmFsdWUgIT0gVHJpU3RhdGU6
OlVuY2hlY2tlZCk7CiAgICAgfQotICAgIHJldHVybiBtX2lzU29saWRDb2xvciAmJiAhbV9jdXJy
ZW50RnJhbWU7CisgICAgcmV0dXJuIG1fc29saWRDb2xvclZhbHVlID09IFRyaVN0YXRlOjpZZXM7
CiB9Ci0KLUNvbG9yIEJpdG1hcEltYWdlOjpzb2xpZENvbG9yKCkgY29uc3QKKyAgICAKK2Jvb2wg
Qml0bWFwSW1hZ2U6Om1heUZpbGxXaXRoU29saWRDb2xvcigpCit7CisgICAgcmV0dXJuIGlzU29s
aWRDb2xvcigpICYmICFtX2N1cnJlbnRGcmFtZTsKK30KKyAgICAKK0NvbG9yIEJpdG1hcEltYWdl
Ojpzb2xpZENvbG9yKCkKIHsKLSAgICByZXR1cm4gbV9zb2xpZENvbG9yOworICAgIHJldHVybiBp
c1NvbGlkQ29sb3IoKSA/IG1fc29saWRDb2xvciA6IENvbG9yKCk7CiB9CiAgICAgCiBib29sIEJp
dG1hcEltYWdlOjpjYW5BbmltYXRlKCkKQEAgLTcxMiwxMSArNzI1LDggQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICAKICAgICBpZiAoYWxsb3dTdWJz
YW1wbGluZygpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImFsbG93LXN1YnNhbXBsaW5nIiwg
YWxsb3dTdWJzYW1wbGluZygpKTsKLSAgICBpZiAobV9pc1NvbGlkQ29sb3IpCi0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgic29saWQtY29sb3IiLCBtX2lzU29saWRDb2xvcik7Ci0gICAgCi0gICAg
aWYgKG1faW1hZ2VPcmllbnRhdGlvbiAhPSBPcmlnaW5Ub3BMZWZ0KQotICAgICAgICB0cy5kdW1w
UHJvcGVydHkoIm9yaWVudGF0aW9uIiwgbV9pbWFnZU9yaWVudGF0aW9uKTsKKyAgICBpZiAobV9z
b2xpZENvbG9yVmFsdWUgPT0gVHJpU3RhdGU6OlllcykKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzb2xpZC1jb2xvciIsIG1fc29saWRDb2xvcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDc0OTNjNmE0YmZiODYzZDk3
NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQuLmQ5OTdlZGQ1MmUyNjNiNTVmYzJkMDgxOWE2YzczMjE2
ODIzYjkyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRl
ICJDb2xvci5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VP
cmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiSW50U2l6
ZS5oIgpAQCAtNDcsNjEgKzQ4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fICpIQklUTUFQ
OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBzdHJ1Y3QgRnJhbWVEYXRhOwot
fQotCi1uYW1lc3BhY2UgV1RGIHsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0b3JUcmFpdHM8
V2ViQ29yZTo6RnJhbWVEYXRhPiA6IHB1YmxpYyBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0ID0gZmFsc2U7
IC8vIE5vdCBhbGwgRnJhbWVEYXRhIG1lbWJlcnMgaW5pdGlhbGl6ZSB0byAwLgotICAgIH07Ci19
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGltZXI7CiAKLS8vID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gRnJhbWVEYXRhIENsYXNz
Ci0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQot
c3RydWN0IEZyYW1lRGF0YSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhbWVEYXRhKTsK
LXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1fZnJhbWUoMCkKLSAgICAgICAg
LCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICAsIG1fc3Vi
c2FtcGxpbmdMZXZlbCgwKQotICAgICAgICAsIG1fZHVyYXRpb24oMCkKLSAgICAgICAgLCBtX2hh
dmVNZXRhZGF0YShmYWxzZSkKLSAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCi0gICAgICAg
ICwgbV9oYXNBbHBoYSh0cnVlKSAKLSAgICAgICAgLCBtX2ZyYW1lQnl0ZXMoMCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgfkZyYW1lRGF0YSgpCi0gICAgeyAKLSAgICAgICAgY2xlYXIodHJ1ZSk7Ci0g
ICAgfQotCi0gICAgLy8gQ2xlYXIgdGhlIGNhY2hlZCBpbWFnZSBkYXRhIG9uIHRoZSBmcmFtZSwg
YW5kIChvcHRpb25hbGx5KSB0aGUgbWV0YWRhdGEuCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRo
ZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4KLSAgICBib29sIGNsZWFyKGJvb2wg
Y2xlYXJNZXRhZGF0YSk7Ci0KLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ZyYW1lOwotICAgIEltYWdl
T3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKLSAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2Ft
cGxpbmdMZXZlbDsKLSAgICBmbG9hdCBtX2R1cmF0aW9uOwotICAgIGJvb2wgbV9oYXZlTWV0YWRh
dGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsKLSAgICBib29sIG1faGFzQWxwaGEg
OiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlczsKLX07Ci0KLS8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNz
Ci0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0K
IGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xh
c3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOwpAQCAtMTI1LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgLy8gRmxvYXRTaXplIGR1ZSB0
byBvdmVycmlkZS4KICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIElu
dFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkgY29uc3Q7CisgICAgSW50U2l6ZSBz
aXplUmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3Q7CiAKICAgICBib29sIGdldEhvdFNwb3Qo
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTg5LDcgKzEzOCw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgYm9vbCBpc0JpdG1hcEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdm9pZCB1cGRhdGVTaXplKEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKSBjb25zdDsKKyAgICB2b2lkIHVw
ZGF0ZVNpemUoKSBjb25zdDsKICAgICB2b2lkIGRldGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xl
dmVsKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTIxNCwxMCArMTYzLDEwIEBAIHByb3RlY3Rl
ZDoKIAogICAgIHNpemVfdCBmcmFtZUNvdW50KCk7CiAKLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIg
ZnJhbWVBdEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0aW9uU2NhbGVIaW50ID0gMSk7Ci0g
ICAgUGFzc05hdGl2ZUltYWdlUHRyIGNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChzaXplX3QpOwor
ICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBmcmFtZUltYWdlQXRJbmRleChzaXplX3QsIGZsb2F0IHBy
ZXNlbnRhdGlvblNjYWxlSGludCA9IDEpOworICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjb3B5VW5z
Y2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QpOwogCi0gICAgYm9vbCBoYXZlRnJhbWVBdElu
ZGV4KHNpemVfdCk7CisgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsKIAog
ICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOwogICAgIGZsb2F0IGZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCk7CkBAIC0yMjUsMTEgKzE3NCwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpOwog
CiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFjY2Vzc2VkIGV4Y2Vw
dCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeyBDYWNoZU1ldGFkYXRh
T25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9pZCBjYWNoZUZyYW1lKHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFk
YXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTWV0
YWRhdGFBbmRGcmFtZSk7CiAKICAgICAvLyBDYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyBtX2ZyYW1l
c1tpbmRleF0gZm9yIGluZm8gd2l0aG91dCBkZWNvZGluZy4gUmV0dXJucyBmYWxzZSBvbiBpbmRl
eCBvdXQgb2YgYm91bmRzLgotICAgIGJvb2wgZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5k
ZXgsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBib29s
IGVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IElt
YWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOwogCiAgICAgLy8gQ2FsbGVk
IHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdl
IHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwg
dGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0yODAsOCArMjI4LDkgQEAgcHJvdGVjdGVk
OgogICAgIC8vIGNoYW5nZWQuCiAgICAgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKTsKIAorICAg
IGJvb2wgaXNTb2xpZENvbG9yKCk7CiAgICAgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSBv
dmVycmlkZTsKLSAgICBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ29s
b3Igc29saWRDb2xvcigpIG92ZXJyaWRlOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGJv
b2wgbm90U29saWRDb2xvcigpIG92ZXJyaWRlOwpAQCAtMjk3LDEzICsyNDYsMTAgQEAgcHJpdmF0
ZToKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplOyAvLyBUaGUgc2l6ZSB0byB1c2UgZm9yIHRo
ZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1c3QgYmUgdGhlIHNpemUgb2YgdGhlIGZpcnN0IGltYWdl
KS4KICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOwogCi0g
ICAgbXV0YWJsZSBTdWJzYW1wbGluZ0xldmVsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWw7Ci0K
LSAgICBtdXRhYmxlIHVuc2lnbmVkIG1faW1hZ2VPcmllbnRhdGlvbiA6IDQ7IC8vIEltYWdlT3Jp
ZW50YXRpb25FbnVtCi0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX3Nob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uIDogMTsgLy8gUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtCisgICAgbXV0YWJs
ZSBTdWJzYW1wbGluZ0xldmVsIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgeyAwIH07CiAKICAg
ICBzaXplX3QgbV9jdXJyZW50RnJhbWU7IC8vIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFt
ZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9yPEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFu
IGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8g
cmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCisgICAgVmVjdG9yPEltYWdlRnJh
bWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4gYXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2Yg
dGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byByZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBj
YWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIGlu
dCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxvb3BzIHdl
IHNob3VsZCBkby4gVGhpcyB3aWxsIGJlIGNBbmltYXRpb25Ob25lIGlmIHRoaXMgaW1hZ2UgdHlw
ZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0aW9uLgpAQCAtMzMwLDE2ICsyNzYsMTUgQEAgcHJpdmF0
ZToKICAgICB1aW50MTZfdCBtX3Byb2dyZXNzaXZlTG9hZENodW5rQ291bnQ7CiAjZW5kaWYKIAor
ICAgIGVudW0gY2xhc3MgVHJpU3RhdGUgeyBVbmNoZWNrZWQsIE5vLCBZZXMgfTsKKyAgICBUcmlT
dGF0ZSBtX3NvbGlkQ29sb3JWYWx1ZSB7IFRyaVN0YXRlOjpVbmNoZWNrZWQgfTsKKyAgICAKICAg
ICBib29sIG1fYWxsb3dTdWJzYW1wbGluZyA6IDE7IC8vIFdoZXRoZXIgd2Ugc2hvdWxkIGF0dGVt
cHQgc3Vic2FtcGxpbmcgaWYgdGhpcyBpbWFnZSBpcyB2ZXJ5IGxhcmdlLgotICAgIGJvb2wgbV9p
c1NvbGlkQ29sb3IgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUgYSAxeDEgc29saWQgaW1h
Z2UuCi0gICAgYm9vbCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yIDogMTsgLy8gV2hldGhlciB3ZSd2
ZSBjaGVja2VkIHRoZSBmcmFtZSBmb3Igc29saWQgY29sb3IuCi0KICAgICBib29sIG1fYW5pbWF0
aW9uRmluaXNoZWQgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSd2ZSBjb21wbGV0ZWQgdGhlIGVu
dGlyZSBhbmltYXRpb24uCiAKICAgICBib29sIG1fYWxsRGF0YVJlY2VpdmVkIDogMTsgLy8gV2hl
dGhlciBvciBub3Qgd2UndmUgcmVjZWl2ZWQgYWxsIG91ciBkYXRhLgogICAgIG11dGFibGUgYm9v
bCBtX2hhdmVTaXplIDogMTsgLy8gV2hldGhlciBvciBub3Qgb3VyIHxtX3NpemV8IG1lbWJlciB2
YXJpYWJsZSBoYXMgdGhlIGZpbmFsIG92ZXJhbGwgaW1hZ2Ugc2l6ZSB5ZXQuCiAgICAgYm9vbCBt
X3NpemVBdmFpbGFibGUgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBjYW4gb2J0YWluIHRoZSBz
aXplIG9mIHRoZSBmaXJzdCBpbWFnZSBmcmFtZSB5ZXQgZnJvbSBJbWFnZUlPLgotICAgIG11dGFi
bGUgYm9vbCBtX2hhc1VuaWZvcm1GcmFtZVNpemUgOiAxOwogICAgIG11dGFibGUgYm9vbCBtX2hh
dmVGcmFtZUNvdW50IDogMTsKICAgICBib29sIG1fYW5pbWF0aW9uRmluaXNoZWRXaGVuQ2F0Y2hp
bmdVcCA6IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ljb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ljb24uaAppbmRleCBk
OTVlN2RlYjgxMGZjMjRmN2Y2MWIxYjIzYTRiOWFlZjNmM2MxN2I3Li4yOGMxMzdkMjliMTE4YTlj
ZjFiNjE2MWVkZTRkZTQ5MWQwNDg4MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JY29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSWNvbi5oCkBAIC02OCw4ICs2OCw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiBQTEFU
Rk9STShJT1MpCi0gICAgSWNvbihDR0ltYWdlUmVmKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9jZ0ltYWdlOworICAgIEljb24oTmF0aXZlSW1hZ2VQdHIpOworICAgIE5hdGl2ZUltYWdl
UHRyIG1fY2dJbWFnZTsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBJY29uKE5TSW1hZ2UqKTsK
ICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gbV9uc0ltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNDFmZWYyYTJiMDMxNzBlM2IwM2ZkNmM1MmEyZmRmMjgz
ZTU2Mjc1OC4uYjEyYzBjMWVlMmZmODE0MTQ1ZGFkMGEzNDZkMWM3YTc3NGI2YTc4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xOTQsNyArMTk0LDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgLy8gU3VwcG9ydGluZyB0aWxlZCBkcmF3aW5nCiAgICAgdmlydHVh
bCBib29sIG1heUZpbGxXaXRoU29saWRDb2xvcigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBDb2xvciBzb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQorICAgIHZp
cnR1YWwgQ29sb3Igc29saWRDb2xvcigpIHsgcmV0dXJuIENvbG9yKCk7IH0KICAgICAKIHByaXZh
dGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNhZjY4MjA4N2EzNmY1ZGEyOTZiMGQ4ZjRhY2EwM2NiOGY2MjcxODkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
RGF0YS5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUZyYW1l
RGF0YS5oIgorCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YSgpCit7Cit9CisKK0ltYWdl
RnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShJbWFnZURlY29kZXImIGRlY29kZXIsIHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICwgbV9zdWJzYW1wbGluZ0xl
dmVsKHN1YnNhbXBsaW5nTGV2ZWwpCisgICAgLCBtX2hhdmVNZXRhZGF0YSh0cnVlKQoreworI2lm
IFVTRShDRykKKyAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5vcmllbnRhdGlvbkF0SW5kZXgo
aW5kZXgpOworICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KGlu
ZGV4KTsKKyAgICBtX2ZyYW1lQnl0ZXMgPSBkZWNvZGVyLmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAKKyAgICBtX2FsbG93U3Vic2FtcGxpbmcgPSBkZWNv
ZGVyLmFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChpbmRleCk7CisgICAgCisgICAgbV9p
c0NvbXBsZXRlID0gZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKKyAgICBp
ZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkKKyAgICAgICAg
bV9kdXJhdGlvbiA9IGRlY29kZXIuZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOworI2Vsc2UK
KyAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5vcmllbnRhdGlvbigpOworICAgIG1faGFzQWxw
aGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICBtX2ZyYW1lQnl0
ZXMgPSBkZWNvZGVyLmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4KTsKKyAgICAKKyAgICBJbWFnZUZy
YW1lKiBidWZmZXIgPSBkZWNvZGVyLmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7CisgICAgaWYg
KGJ1ZmZlciAmJiBidWZmZXItPnN0YXR1cygpICE9IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsK
KyAgICAgICAgbV9pc0NvbXBsZXRlID0gYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpG
cmFtZUNvbXBsZXRlOworICAgICAgICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBj
QW5pbWF0aW9uTm9uZSkgeworICAgICAgICAgICAgLy8gTWFueSBhbm5veWluZyBhZHMgc3BlY2lm
eSBhIDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBvc3Np
YmxlLgorICAgICAgICAgICAgLy8gV2UgZm9sbG93IEZpcmVmb3gncyBiZWhhdmlvciBhbmQgdXNl
IGEgZHVyYXRpb24gb2YgMTAwIG1zIGZvciBhbnkgZnJhbWVzIHRoYXQgc3BlY2lmeQorICAgICAg
ICAgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5
MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+CisgICAgICAgICAgICAvLyBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIG1fZHVyYXRpb24gPSBzdGQ6Om1heChidWZm
ZXItPmR1cmF0aW9uKCkgLyAxMDAwLjBmLCAwLjEwMGYpOworICAgICAgICB9CisgICAgfQorI2Vu
ZGlmCit9CisKK0ltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEoKQoreworICAgIGNsZWFy
KEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU5vbmUpOworfQorCitJbWFnZUZyYW1lU3RhdHVzIElt
YWdlRnJhbWVEYXRhOjpzdGF0dXMoKSBjb25zdAoreworICAgIGlmICghbV9pbWFnZSkKKyAgICAg
ICAgcmV0dXJuIEltYWdlRnJhbWVTdGF0dXM6OkRlY29kZU5vbmU7CisgICAgCisgICAgcmV0dXJu
IG1faXNDb21wbGV0ZSA/IEltYWdlRnJhbWVTdGF0dXM6OkRlY29kZUNvbXBsZXRlIDogSW1hZ2VG
cmFtZVN0YXR1czo6RGVjb2RlUGFydGlhbDsKK30KKyAgICAKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0YWZm
ODY0MjI4ODc5ZmZkNWZkZDM1MDczYWQ1ODk3YjU2MDYzM2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCkBAIC0wLDAg
KzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJbWFnZUZyYW1lRGF0YV9oCisjZGVmaW5lIEltYWdlRnJhbWVEYXRhX2gKKworI2lu
Y2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUg
IkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisgICAgCisvLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlz
IGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgordHlwZWRlZiBzaG9ydCBTdWJzYW1w
bGluZ0xldmVsOwordHlwZWRlZiBzaXplX3QgSW1hZ2VGcmFtZUluZGV4OworCitzdGF0aWMgY29u
c3QgSW1hZ2VGcmFtZUluZGV4IE1heEltYWdlRnJhbWVJbmRleCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8SW1hZ2VGcmFtZUluZGV4Pjo6bWF4KCk7CisKK2VudW0gY2xhc3MgSW1hZ2VGcmFtZUNhY2hp
bmcgeworICAgIENhY2hlTm9uZSwKKyAgICBDYWNoZU1ldGFkYXRhLAorICAgIENhY2hlRnJhbWUs
CisgICAgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lCit9OworCitlbnVtIGNsYXNzIEltYWdlRnJhbWVT
dGF0dXMgeworICAgIERlY29kZU5vbmUsCisgICAgRGVjb2RlUGFydGlhbCwKKyAgICBEZWNvZGVD
b21wbGV0ZQorfTsKKworY2xhc3MgSW1hZ2VEZWNvZGVyOworCitzdHJ1Y3QgSW1hZ2VGcmFtZURh
dGEgeworcHVibGljOgorICAgIEltYWdlRnJhbWVEYXRhKCk7CisgICAgSW1hZ2VGcmFtZURhdGEo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICBJbWFnZUZyYW1lRGF0YShJbWFnZURlY29kZXIm
LCBJbWFnZUZyYW1lSW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiA9IG51bGxwdHIpOworICAgIH5JbWFnZUZyYW1lRGF0YSgpOworICAgIAorICAgIEltYWdlRnJh
bWVTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CisgICAgCisgICAgYm9vbCBjbGVhcihJbWFnZUZyYW1l
Q2FjaGluZyk7CisgICAgT3B0aW9uYWw8Q29sb3I+IHNvbGlkQ29sb3IoKSBjb25zdDsKKyAgICAK
KyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlIHsgbnVsbHB0ciB9OworICAgIEltYWdlT3JpZW50
YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07CisgICAgU3Vi
c2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07CisgICAgZmxvYXQgbV9kdXJh
dGlvbiB7IDAgfTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg
IGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOworICAgICAgICAgICAgYm9vbCBtX2lzQ29tcGxldGUg
OiAxOworICAgICAgICAgICAgYm9vbCBtX2hhc0FscGhhIDogMTsKKyAgICAgICAgICAgIGJvb2wg
bV9hbGxvd1N1YnNhbXBsaW5nIDogMTsKKyAgICAgICAgfTsKKyAgICAgICAgdWludDhfdCBtX2Zs
YWdzW3NpemVvZihib29sKV0geyAwIH07CisgICAgfTsKKyAgICB1bnNpZ25lZCBtX2ZyYW1lQnl0
ZXMgeyAwIH07CisgICAgSW50U2l6ZSBtX3NpemU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gSW1hZ2VGcmFtZURhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc0ZWYwNTNhMzMzZmY1
ZmM1NzhlODE4MDBjYzZmYzk3NTVlZmJhYjguLjJmZmE0MGU0Mzg0ZTBiYjlhYWM1ZWE3NzkyZDNk
ZTZiMTIzYjI0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKQEAgLTY4LDExICs2OCw2IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFy
KGJvb2wgZGVzdHJveUFsbCwgc2l6ZV90IGNsZWFyQmVmb3JlRnJhbWUsIFNoYXJlZEJ1ZmZlcioK
ICAgICAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi1ib29sIEltYWdl
U291cmNlOjppbml0aWFsaXplZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGVjb2RlcjsKLX0K
LQogdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIC8vIE1ha2UgdGhlIGRlY29kZXIgYnkgc25pZmZpbmcgdGhl
IGJ5dGVzLgpAQCAtOTYsNyArOTEsNyBAQCBTdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5maWxlbmFt
ZUV4dGVuc2lvbigpIDogU3RyaW5nKCk7CiB9CiAKLVN1YnNhbXBsaW5nTGV2ZWwgSW1hZ2VTb3Vy
Y2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCkgY29uc3QKK1N1YnNhbXBsaW5nTGV2
ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCwgU3Vic2FtcGxp
bmdMZXZlbCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTExMSwyMSArMTA2LDI1IEBA
IGJvb2wgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpCiAgICAgcmV0dXJuIG1fZGVjb2Rl
ciAmJiBtX2RlY29kZXItPmlzU2l6ZUF2YWlsYWJsZSgpOwogfQogCi1JbnRTaXplIEltYWdlU291
cmNlOjpzaXplKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikgY29uc3QK
K0ludFNpemUgSW1hZ2VTb3VyY2U6OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBmcmFtZVNp
emVBdEluZGV4KDAsIDAsIGRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRl
eCgwLCAwKTsKK30KKyAgICAKK0ludFNpemUgSW1hZ2VTb3VyY2U6OnNpemVSZXNwZWN0aW5nT3Jp
ZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBmcmFtZVNpemVBdEluZGV4KDAsIDAsIFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKIH0KIAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVT
aXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikgY29uc3QKK0ludFNpemUgSW1hZ2VTb3VyY2U6OmZy
YW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2RlY29kZXIpCisgICAgaWYgKCFpbml0aWFsaXplZCgpKQogICAgICAgICBy
ZXR1cm4gSW50U2l6ZSgpOwogCiAgICAgSW50U2l6ZSBzaXplID0gbV9kZWNvZGVyLT5mcmFtZVNp
emVBdEluZGV4KGluZGV4KTsKLSAgICBpZiAoKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pICYmIG1fZGVjb2Rlci0+b3JpZW50
YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKQotICAgICAgICByZXR1cm4gSW50U2l6ZShzaXpl
LmhlaWdodCgpLCBzaXplLndpZHRoKCkpOworICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24gPSBtX2RlY29kZXItPm9yaWVudGF0aW9uKCk7CiAKLSAgICByZXR1cm4gc2l6ZTsKKyAgICBy
ZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUudHJhbnNwb3Nl
ZFNpemUoKSA6IHNpemU7CiB9CiAKIGJvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9p
bnQmIGhvdFNwb3QpIGNvbnN0CkBAIC0xNDgsNyArMTQ3LDcgQEAgc2l6ZV90IEltYWdlU291cmNl
OjpmcmFtZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5m
cmFtZUNvdW50KCkgOiAwOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNy
ZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpCitQYXNzTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaAppbmRleCBhY2RkMWNlNGNlMzAwZGU4MWM5ZTA2MmVlZTc2MDdiZjQ3MmE3MGFmLi45MGI0
MjkzNjM2NjY3MmM1ZmI0MzM2N2I3ZGFjZDM4Yjk5YTcxNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTQ2LDE4ICs0Niw5IEBAIGNs
YXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAotI2lm
IFVTRShDRykKLXR5cGVkZWYgQ0dJbWFnZVNvdXJjZVJlZiBOYXRpdmVJbWFnZURlY29kZXJQdHI7
Ci0jZWxzZQogY2xhc3MgSW1hZ2VEZWNvZGVyOwogdHlwZWRlZiBJbWFnZURlY29kZXIqIE5hdGl2
ZUltYWdlRGVjb2RlclB0cjsKLSNlbmRpZgotCi0jaWYgVVNFKENHKQotI2RlZmluZSBOYXRpdmVJ
bWFnZURlY29kZXIgSW1hZ2VEZWNvZGVyCi0jZWxzZQogdHlwZWRlZiBJbWFnZURlY29kZXIgTmF0
aXZlSW1hZ2VEZWNvZGVyOwotI2VuZGlmCiAKIC8vIFJpZ2h0IG5vdyBHSUZzIGFyZSB0aGUgb25s
eSByZWNvZ25pemVkIGltYWdlIGZvcm1hdCB0aGF0IHN1cHBvcnRzIGFuaW1hdGlvbi4KIC8vIFRo
ZSBhbmltYXRpb24gc3lzdGVtIGFuZCB0aGUgY29uc3RhbnRzIGJlbG93IGFyZSBkZXNpZ25lZCB3
aXRoIHRoaXMgaW4gbWluZC4KQEAgLTExMCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgLy8gZGVj
b2RlZCBmcmFtZXMuCiAgICAgLy8KICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCBjbGVh
cihmYWxzZSwgbikgYW5kIHN1YnNlcXVlbnRseSBjYWxsCi0gICAgLy8gY3JlYXRlRnJhbWVBdElu
ZGV4KG0pIHdpdGggbSA8IG4sIHVubGVzcyB0aGV5IGZpcnN0IGNhbGwgY2xlYXIodHJ1ZSkuCisg
ICAgLy8gY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobSkgd2l0aCBtIDwgbiwgdW5sZXNzIHRoZXkg
Zmlyc3QgY2FsbCBjbGVhcih0cnVlKS4KICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBzdGF0ZWZ1
bCBJbWFnZVNvdXJjZXMvZGVjb2RlcnMgd2lsbCB3b3JrIHByb3Blcmx5LgogICAgIC8vCiAgICAg
Ly8gVGhlIHxkYXRhfCBhbmQgfGFsbERhdGFSZWNlaXZlZHwgcGFyYW1ldGVycyBzaG91bGQgYmUg
c3VwcGxpZWQgYnkgY2FsbGVycwpAQCAtMTIyLDE5ICsxMTMsMjAgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgU2hhcmVkQnVmZmVyKiBkYXRhID0gTlVMTCwKICAgICAgICAgICAgICAgIGJvb2wg
YWxsRGF0YVJlY2VpdmVkID0gZmFsc2UpOwogCi0gICAgYm9vbCBpbml0aWFsaXplZCgpIGNvbnN0
OworICAgIGJvb2wgaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KIAog
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKIAotICAgIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0KSBjb25zdDsKKyAgICBTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCwgU3Vic2FtcGxpbmdM
ZXZlbCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6
ZV90KSBjb25zdDsKIAogICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCk7CiAgICAgLy8gQWx3YXlz
IG9yaWdpbmFsIHNpemUsIHdpdGhvdXQgc3Vic2FtcGxpbmcuCi0gICAgSW50U2l6ZSBzaXplKElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigp
KSBjb25zdDsKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKKyAgICBJbnRTaXplIHNpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24oKSBjb25zdDsKICAgICAvLyBTaXplIG9mIG9wdGlvbmFsbHkgc3Vi
c2FtcGxlZCBmcmFtZS4KLSAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gMCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpIGNvbnN0OworICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVu
dW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdDsKIAogICAgIGJvb2wgZ2V0
SG90U3BvdChJbnRQb2ludCYpIGNvbnN0OwogCkBAIC0xNDYsNyArMTM4LDcgQEAgcHVibGljOgog
CiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFy
KCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBh
Ym92ZS4KLSAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKIAogICAgIGZsb2F0
IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJ
bmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBh
bnkgYWxwaGEuCkBAIC0xNjMsNyArMTU1LDkgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6
Ci0gICAgTmF0aXZlSW1hZ2VEZWNvZGVyUHRyIG1fZGVjb2RlcjsKKyAgICB2b2lkIGVuc3VyZURl
Y29kZXJJc0NyZWF0ZWQoU2hhcmVkQnVmZmVyKik7CisgICAgCisgICAgTmF0aXZlSW1hZ2VEZWNv
ZGVyUHRyIG1fZGVjb2RlciB7IG51bGxwdHIgfTsKIAogI2lmICFVU0UoQ0cpCiAgICAgQWxwaGFP
cHRpb24gbV9hbHBoYU9wdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9OYXRpdmVJbWFnZVB0ci5oCmluZGV4IGRmOTQxYTU2NmE5ZTQ2OTI3NzI3YmExZWM2ODQ4
ZjIxNjgwM2E0NWIuLmVjYTFiOTJjNDFlZTE4MjhlMzEwZDViZWRiYjJiNWFjYTU5NWY1NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIu
aApAQCAtMjksNiArMjksNyBAQAogI2RlZmluZSBOYXRpdmVJbWFnZVB0cl9oCiAKICNpZiBVU0Uo
Q0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSog
Q0dJbWFnZVJlZjsKICNlbGlmIFVTRShDQUlSTykKICNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgpA
QCAtNDEsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBGSVhNRTogTmF0aXZlSW1h
Z2VQdHIgYW5kIFBhc3NOYXRpdmVJbWFnZVB0ciBzaG91bGQgYmUgc21hcnQKIC8vIHBvaW50ZXJz
IChzZWUgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpLgogI2lmIFVTRShD
RykKLXR5cGVkZWYgQ0dJbWFnZVJlZiBOYXRpdmVJbWFnZVB0cjsKK3R5cGVkZWYgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IE5hdGl2ZUltYWdlUHRyOwogI2VsaWYgVVNFKENBSVJPKQogdHlwZWRlZiBS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBOYXRpdmVJbWFnZVB0cjsKIHR5cGVkZWYgUGFzc1JlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IFBhc3NOYXRpdmVJbWFnZVB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDYzZGNmMGEyNTNlMjM0MGY2N2YxYzgxZDg1ZmMyNzBkZDIzMGU4NmQuLmE0YzY1YmRmZjMyYTky
ZjljMWRmMjZkNGJmNTMwODBmMDVhYjk2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTAzNyw3ICsx
MDM3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDb250ZW50c1RvSW1h
Z2UoSW1hZ2UqIGltYWdlKQogewogICAgIGlmIChpbWFnZSkgewotICAgICAgICBDR0ltYWdlUmVm
IG5ld0ltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAgICAg
IENHSW1hZ2VSZWYgbmV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KS5nZXQoKTsKICAgICAgICAgaWYgKCFuZXdJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBjZDU3ZWU0ODVlYTgwYzZjZjM0N2FiM2JkOTczN2Q1
OTk5ZTEwMjgyLi4xMDIyMzVkOWFmMDA1NGQ2Mzg5MWZjNGM3Y2U1Y2Q3NDVjNjAwMWRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtNDAsMTYgKzQwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNl
cnZlcikKLSAgICAsIG1fc2l6ZShjYWlyb1N1cmZhY2VTaXplKG5hdGl2ZUltYWdlLmdldCgpKSkK
LSAgICAsIG1fbWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoMCkKICAgICAsIG1fY3VycmVudEZyYW1l
KDApCiAgICAgLCBtX3JlcGV0aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKICAgICAsIG1fcmVw
ZXRpdGlvbkNvdW50U3RhdHVzKFVua25vd24pCiAgICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUo
MCkKLSAgICAsIG1fZGVjb2RlZFNpemUobV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCkg
KiA0KQogICAgICwgbV9mcmFtZUNvdW50KDEpCi0gICAgLCBtX2lzU29saWRDb2xvcihmYWxzZSkK
LSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCiAgICAgLCBtX2FuaW1hdGlvbkZp
bmlzaGVkKHRydWUpCiAgICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQogICAgICwgbV9oYXZl
U2l6ZSh0cnVlKQpAQCAtNTcsMTEgKzUyLDkgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBh
c3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlcioKICAg
ICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKIHsKICAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAg
IG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG5hdGl2
ZUltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwotICAgIG1fZnJhbWVzWzBdLm1f
ZnJhbWUgPSBuYXRpdmVJbWFnZTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRy
dWU7Ci0KLSAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKKyAgICBtX2ZyYW1lc1swXSA9IEltYWdl
RnJhbWVEYXRhKG5hdGl2ZUltYWdlKTsKKyAgICBtX3NpemUgPSBtX2ZyYW1lc1swXS5tX3NpemU7
CisgICAgbV9kZWNvZGVkU2l6ZSA9IG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpICog
NDsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsCkBAIC03Miw3ICs2NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAKICAg
ICBzdGFydEFuaW1hdGlvbigpOwogCi0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFj
ZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICBp
ZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2Ug
eWV0LgogICAgICAgICByZXR1cm47CiAKQEAgLTEyNCw0NyArMTE3LDUxIEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dCwgY29uc3QgRmxvCiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRldGVybWluZU1pbmltdW1TdWJzYW1w
bGluZ0xldmVsKCkgY29uc3QKIHsKLSAgICBtX21pbmltdW1TdWJzYW1wbGluZ0xldmVsID0gMDsK
KyAgICBtX21heGltdW1TdWJzYW1wbGluZ0xldmVsID0gMDsKIH0KIAotdm9pZCBCaXRtYXBJbWFn
ZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICwg
bV9oYXZlTWV0YWRhdGEodHJ1ZSkKKyAgICAsIG1faXNDb21wbGV0ZSh0cnVlKQogewotICAgIG1f
aXNTb2xpZENvbG9yID0gZmFsc2U7Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7
Ci0KLSAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVm
UHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSk7Ci0gICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZl
IGFuIGltYWdlIHlldC4KLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGNhaXJvX3N1cmZhY2Vf
Z2V0X3R5cGUoc3VyZmFjZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBJbnRTaXplIHNpemUgPSBjYWlyb1N1cmZhY2VTaXplKHN1cmZh
Y2UuZ2V0KCkpOwotCi0gICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkg
IT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSByZWlu
dGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEo
c3VyZmFjZS5nZXQoKSkpOwotICAgIG1fc29saWRDb2xvciA9IGNvbG9yRnJvbVByZW11bHRpcGxp
ZWRBUkdCKCpwaXhlbENvbG9yKTsKLQotICAgIG1faXNTb2xpZENvbG9yID0gdHJ1ZTsKKyAgICBB
U1NFUlQobV9pbWFnZSk7CisgICAgbV9zaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdl
dCgpKTsKKyAgICBtX2ZyYW1lQnl0ZXMgPSBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQo
KSAqIDQ7CisgICAgbV9oYXNBbHBoYSA9IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobV9pbWFn
ZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKIH0KIAotYm9vbCBGcmFtZURhdGE6OmNs
ZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKKworYm9vbCBJbWFnZUZyYW1lRGF0YTo6Y2xlYXIoSW1h
Z2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQogewotICAgIGlmIChjbGVhck1ldGFkYXRhKQor
ICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSkKICAg
ICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKIAotICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAg
ICAgIG1fZnJhbWUgPSBudWxscHRyOworICAgIGlmIChtX2ltYWdlKSB7CisgICAgICAgIG1faW1h
Z2UgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitPcHRpb25hbDxDb2xvcj4gSW1hZ2VGcmFtZURhdGE6OnNvbGlkQ29sb3IoKSBj
b25zdAoreworICAgIGlmICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAg
CisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9pbWFnZS5nZXQoKSkgIT0gQ0FJUk9f
U1VSRkFDRV9UWVBFX0lNQUdFKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKworICAgIEludFNp
emUgc2l6ZSA9IGNhaXJvU3VyZmFjZVNpemUobV9pbWFnZS5nZXQoKSk7CisKKyAgICBpZiAoc2l6
ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQorICAgICAgICByZXR1cm4gTnVs
bG9wdDsKKworICAgIHVuc2lnbmVkKiBwaXhlbENvbG9yID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8
dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1faW1hZ2UuZ2V0KCkpKTsK
KyAgICByZXR1cm4gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29sb3IpOworfQor
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggY2M3MDQ2MTQ3YWU4MWYxZmFkYWE2ZDg0
MTYyNDk4MGM2ZmRmY2JmMS4uOGM0MTg2ZDcxZTUzYTE5MDdlOTJkNzNhMmIwMTY0N2ZmZDY2YjFj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTIxNSw3ICsyMTUsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBkZWNvZGVyLnNldERhdGEobV9pbWFn
ZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAh
ZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4
KDApOworICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9pbWFnZVN1cmZhY2UgPSBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgICAgICAvLyAxLiBGb3IgdGV4SW1h
Z2UyRCB3aXRoIEhUTUxWaWRlb0VsbWVudCBpbnB1dCwgYXNzdW1lIG5vIFByZW11bHRpcGx5QWxw
aGEgaGFkIGJlZW4gYXBwbGllZCBhbmQgdGhlIGFscGhhIHZhbHVlIGlzIDB4RkYgZm9yIGVhY2gg
cGl4ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9C
aXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Jp
dG1hcEltYWdlQ0cuY3BwCmluZGV4IDAxYjdkNjkyY2RiZDdhYjRkMjJiYmMxMzk5YzEwMzI4ZjU3
ZTVlNDcuLjVhYzMzNmQyYWZjMjZmYjEyNDMxOWZkZjY0NjVmNTJjNWNkODE0YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cu
Y3BwCkBAIC00OSwzMSArNDksNjMgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlKQorICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICAsIG1faGF2ZU1ldGFkYXRhKHRydWUp
CisgICAgLCBtX2lzQ29tcGxldGUodHJ1ZSkKKyAgICAsIG1faGFzQWxwaGEodHJ1ZSkKK3sKKyAg
ICBBU1NFUlQobV9pbWFnZSk7CisgICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aCht
X2ltYWdlLmdldCgpKTsKKyAgICBDR0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQobV9p
bWFnZS5nZXQoKSk7CisgICAgbV9mcmFtZUJ5dGVzID0gd2lkdGggKiBoZWlnaHQgKiA0OworICAg
IG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7Cit9CiAKLWJvb2wgRnJhbWVEYXRhOjpj
bGVhcihib29sIGNsZWFyTWV0YWRhdGEpCitib29sIEltYWdlRnJhbWVEYXRhOjpjbGVhcihJbWFn
ZUZyYW1lQ2FjaGluZyBmcmFtZUNhY2hpbmcpCiB7Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCisg
ICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVOb25lKQogICAg
ICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwogCiAgICAgbV9vcmllbnRhdGlvbiA9IERlZmF1
bHRJbWFnZU9yaWVudGF0aW9uOwogICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IDA7CiAKLSAgICBp
ZiAobV9mcmFtZSkgeworICAgIGlmIChtX2ltYWdlKSB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0g
ICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1fZnJhbWUpOworICAgICAgICBzdWJp
bWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ltYWdlLmdldCgpKTsKICNlbmRpZgotICAgICAgICBD
R0ltYWdlUmVsZWFzZShtX2ZyYW1lKTsKLSAgICAgICAgbV9mcmFtZSA9IDA7CisgICAgICAgIG1f
aW1hZ2UgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwogfQorICAgIAorT3B0aW9uYWw8Q29sb3I+IEltYWdlRnJhbWVEYXRhOjpzb2xpZENv
bG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgIAorICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZvciBzb2xpZCBjb2xvciBp
biB0aGUgaW1wb3J0YW50IHNwZWNpYWwgY2FzZSBvZiBhIDF4MSBpbWFnZS4KKyAgICBpZiAoQ0dJ
bWFnZUdldFdpZHRoKG1faW1hZ2UuZ2V0KCkpICE9IDEgfHwgQ0dJbWFnZUdldEhlaWdodChtX2lt
YWdlLmdldCgpKSAhPSAxKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAKKyAgICB1bnNp
Z25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4g
Yml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAx
LCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworICAgIGlmICghYml0
bWFwQ29udGV4dCkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgCisgICAgR3JhcGhpY3ND
b250ZXh0KGJpdG1hcENvbnRleHQuZ2V0KCkpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVDb3B5KTsKKyAgICBDR1JlY3QgZGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCAx
LCAxKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGlu
YXRpb25SZWN0LCBtX2ltYWdlLmdldCgpKTsKKyAgICBpZiAoIXBpeGVsWzNdKQorICAgICAgICBy
ZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgCisgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBd
ICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICog
MjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKK30KIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdl
KENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCitCaXRtYXBJbWFn
ZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2Vy
dmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX21pbmltdW1TdWJzYW1wbGluZ0xl
dmVsKDApCi0gICAgLCBtX2ltYWdlT3JpZW50YXRpb24oT3JpZ2luVG9wTGVmdCkKLSAgICAsIG1f
c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRGcmFt
ZSgwKQogICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3Jl
cGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQpAQCAtODEsMTYgKzExMywxNCBAQCBCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICAsIG1fZGVjb2RlZFNpemUoMCkKICAgICAsIG1fZGVjb2RlZFByb3BlcnRpZXNT
aXplKDApCiAgICAgLCBtX2ZyYW1lQ291bnQoMSkKLSAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNl
KQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkKICAgICAsIG1fYW5pbWF0aW9u
RmluaXNoZWQodHJ1ZSkKICAgICAsIG1fYWxsRGF0YVJlY2VpdmVkKHRydWUpCiAgICAgLCBtX2hh
dmVTaXplKHRydWUpCiAgICAgLCBtX3NpemVBdmFpbGFibGUodHJ1ZSkKICAgICAsIG1faGF2ZUZy
YW1lQ291bnQodHJ1ZSkKIHsKLSAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNn
SW1hZ2UpOwotICAgIENHRmxvYXQgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKTsK
KyAgICBDR0Zsb2F0IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKKyAgICBD
R0Zsb2F0IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwogICAgIG1fZGVj
b2RlZFNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQ7CiAgICAgbV9zaXplID0gSW50U2l6ZSh3aWR0
aCwgaGVpZ2h0KTsKIApAQCAtOTksMTEgKzEyOSw3IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIG1fc2l6
ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZTsKIAogICAgIG1fZnJhbWVzLmdyb3coMSk7
Ci0gICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IENHSW1hZ2VSZXRhaW4oY2dJbWFnZSk7Ci0gICAg
bV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IHRydWU7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0
YWRhdGEgPSB0cnVlOwotCi0gICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CisgICAgbV9mcmFtZXNb
MF0gPSBJbWFnZUZyYW1lRGF0YShpbWFnZSk7CiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRldGVy
bWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKQEAgLTEyNSw2NCArMTUxLDIxIEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRldGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29u
c3QKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIG1fbWluaW11bVN1YnNhbXBsaW5n
TGV2ZWwgPSBjdXJyZW50TGV2ZWw7Ci19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29s
aWRDb2xvcigpCi17Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7Ci0gICAgbV9p
c1NvbGlkQ29sb3IgPSBmYWxzZTsKLQotICAgIGlmIChmcmFtZUNvdW50KCkgPiAxKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoIWhhdmVGcmFtZUF0SW5kZXgoMCkpIHsKLSAgICAgICAgSW50
U2l6ZSBzaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLSAgICAgICAgaWYg
KHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoMCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IG51bGxwdHI7Ci0gICAg
aWYgKG1fZnJhbWVzLnNpemUoKSkKLSAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1swXS5tX2ZyYW1l
OwotCi0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQ3VycmVudGx5
IHdlIG9ubHkgY2hlY2sgZm9yIHNvbGlkIGNvbG9yIGluIHRoZSBpbXBvcnRhbnQgc3BlY2lhbCBj
YXNlIG9mIGEgMXgxIGltYWdlLgotICAgIGlmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IDEg
JiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gMSkgewotICAgICAgICB1bnNpZ25lZCBjaGFy
IHBpeGVsWzRdOyAvLyBSR0JBCi0gICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1h
cENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwg
c2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwKLSAgICAgICAgICAgIGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7Ci0gICAg
ICAgIGlmICghYml0bWFwQ29udGV4dCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0KGJpdG1hcENvbnRleHQuZ2V0KCkpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVDb3B5KTsKLSAgICAgICAgQ0dSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IENHUmVjdE1h
a2UoMCwgMCwgMSwgMSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250ZXh0
LmdldCgpLCBkZXN0aW5hdGlvblJlY3QsIGltYWdlKTsKLSAgICAgICAgaWYgKCFwaXhlbFszXSkK
LSAgICAgICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKDAsIDAsIDAsIDApOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBp
eGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVs
WzNdLCBwaXhlbFszXSk7Ci0KLSAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOwotICAgIH0K
KyAgICBtX21heGltdW1TdWJzYW1wbGluZ0xldmVsID0gY3VycmVudExldmVsOwogfQogCiBDR0lt
YWdlUmVmIEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKCkKIHsKLSAgICByZXR1cm4gZnJhbWVB
dEluZGV4KDApOworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKIH0KIAog
Q0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiB7CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNn
SW1hZ2UgPSBmcmFtZUF0SW5kZXgoaSk7Ci0gICAgICAgIGlmIChjZ0ltYWdlICYmIEludFNpemUo
Q0dJbWFnZUdldFdpZHRoKGNnSW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpKSA9PSBz
aXplKQotICAgICAgICAgICAgcmV0dXJuIGNnSW1hZ2U7CisgICAgICAgIFBhc3NOYXRpdmVJbWFn
ZVB0ciBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoaW1hZ2UgJiYg
SW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlLmdldCgpKSkgPT0gc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBpbWFnZS5nZXQoKTsKICAg
ICB9CiAKICAgICAvLyBGYWxsYmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNh
bid0IGZpbmQgdGhlIHJpZ2h0IHNpemUKQEAgLTE5Nyw4ICsxODAsOCBAQCBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCiAgICAgCiAgICAgQ0ZNdXRh
YmxlQXJyYXlSZWYgYXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShOVUxMLCBjb3VudCwgJmtD
RlR5cGVBcnJheUNhbGxCYWNrcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7Ci0gICAgICAgIGlmIChDR0ltYWdlUmVmIGN1cnJGcmFtZSA9IGZyYW1lQXRJbmRleChp
KSkKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKKyAg
ICAgICAgaWYgKE5hdGl2ZUltYWdlUHRyIGN1cnJGcmFtZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkp
KQorICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJyRnJhbWUuZ2V0KCkp
OwogICAgIH0KICAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7CiB9CkBAIC0yMTEsMTUgKzE5NCwx
NSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRgogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAjZW5k
aWYKIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKKyAgICBOYXRpdmVJbWFnZVB0
ciBpbWFnZTsKICAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMgZm9yIGRyYXdpbmcg
aW50byBQREYgY29udGV4dHMuCiAgICAgaWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQu
cGxhdGZvcm1Db250ZXh0KCkpKQotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVk
RnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKSk7CisgICAgICAgIGltYWdlID0gY29weVVuc2Nh
bGVkRnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogICAgIGVsc2UgewogICAgICAg
ICBDR1JlY3QgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RBcHBseUFmZmluZVRy
YW5zZm9ybShkZXN0UmVjdCwgQ0dDb250ZXh0R2V0Q1RNKGN0eHQucGxhdGZvcm1Db250ZXh0KCkp
KTsKICAgICAgICAgZmxvYXQgc3Vic2FtcGxpbmdTY2FsZSA9IHN0ZDo6bWluPGZsb2F0PigxLCBz
dGQ6Om1heCh0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLndpZHRoIC8gc3JjUmVjdC53
aWR0aCgpLCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLmhlaWdodCAvIHNyY1JlY3Qu
aGVpZ2h0KCkpKTsKIAotICAgICAgICBpbWFnZSA9IGZyYW1lQXRJbmRleChtX2N1cnJlbnRGcmFt
ZSwgc3Vic2FtcGxpbmdTY2FsZSk7CisgICAgICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgo
bV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOwogICAgIH0KIAogICAgIGlmICghaW1h
Z2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgpAQCAt
MjUxLDE4ICsyMzQsMTggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEYKICAgICAgICAgaW1hZ2VP
YnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwogfQogCi1QYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFw
SW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCitQYXNzTmF0aXZl
SW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJh
bWVzW2luZGV4XS5tX2ZyYW1lKQorICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwg
IW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsK
IAogICAgIGlmICghbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAg
cmV0dXJuIENHSW1hZ2VSZXRhaW4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpOworICAgICAgICBy
ZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CiAKLSAgICByZXR1cm4gbV9zb3VyY2UuY3Jl
YXRlRnJhbWVBdEluZGV4KGluZGV4KTsKKyAgICByZXR1cm4gbV9zb3VyY2UuY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDZj
MDNhMmNlZjg0NjA2NTYxZWEwN2ViOTI4ZjFjZjI5NWY5ZjVlMzYuLjdhMTNiYjU4NDY3MDhkMzdl
MDJiZDNkZDY3MjNjMjdhNDk1MTc2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0zMzMs
MTAgKzMzMywxMCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0
cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbAogICAgICAgICBpZiAoIWRlY29k
ZXIuZnJhbWVDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1f
ZGVjb2RlZEltYWdlID0gYWRvcHRDRihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7Cisg
ICAgICAgIG1fZGVjb2RlZEltYWdlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleCgw
KTsKICAgICAgICAgbV9jZ0ltYWdlID0gbV9kZWNvZGVkSW1hZ2UuZ2V0KCk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIG1fY2dJbWFnZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCk7CisgICAgICAgIG1fY2dJbWFnZSA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkuZ2V0KCk7CiAgICAgaWYgKCFtX2NnSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52
YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgY29udGV4
dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1h
Z2VIZWlnaHQpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRl
cnBvbGF0aW9uTm9uZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQo
KSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNp
emUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdl
LCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6
ZSksIENvbXBvc2l0ZUNvcHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAKaW5kZXggYTQ0OTY1NDA0NmFlOGYxMGFiYWQxNjQxNWU2NDYwYWRiYmJiOGU4OC4u
MTYyMDlhZjUzNDQ4MWRiNGNkZGQ4YjQyM2NlN2JmMmE0MGIwZGJlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcApAQCAtMzExLDggKzMxMSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVy
bihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAgZmxv
YXQgYWRqdXN0ZWRYID0gcGhhc2UueCgpIC0gZGVzdFJlY3QueCgpICsgdGlsZVJlY3QueCgpICog
bmFycm93UHJlY2lzaW9uVG9GbG9hdChwYXR0ZXJuVHJhbnNmb3JtLmEoKSk7IC8vIFdlIHRyYW5z
bGF0ZWQgdGhlIGNvbnRleHQgc28gdGhhdCBkZXN0UmVjdC54KCkgaXMgdGhlIG9yaWdpbiwgc28g
c3VidHJhY3QgaXQgb3V0LgogICAgIGZsb2F0IGFkanVzdGVkWSA9IGRlc3RSZWN0LmhlaWdodCgp
IC0gKHBoYXNlLnkoKSAtIGRlc3RSZWN0LnkoKSArIHRpbGVSZWN0LnkoKSAqIG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQocGF0dGVyblRyYW5zZm9ybS5kKCkpICsgc2NhbGVkVGlsZUhlaWdodCk7CiAK
LSAgICBDR0ltYWdlUmVmIHRpbGVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCk7Ci0gICAgZmxvYXQgaCA9IENHSW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlKTsKKyAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gdGlsZUltYWdlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKTsKKyAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0
KCkpOwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwogI2lmIFBMQVRGT1JN
KElPUykKQEAgLTMyNiwxMyArMzI2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0
dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAgICAg
ICAgIC8vIENvcHlpbmcgYSBzdWItaW1hZ2Ugb3V0IG9mIGEgcGFydGlhbGx5LWRlY29kZWQgaW1h
Z2Ugc3RvcHMgdGhlIGRlY29kaW5nIG9mIHRoZSBvcmlnaW5hbCBpbWFnZS4gSXQgc2hvdWxkIG5l
dmVyIGhhcHBlbgogICAgICAgICAvLyBiZWNhdXNlIHN1Yi1pbWFnZXMgYXJlIG9ubHkgdXNlZCBm
b3IgYm9yZGVyLWltYWdlLCB3aGljaCBvbmx5IHJlbmRlcnMgd2hlbiB0aGUgaW1hZ2UgaXMgZnVs
bHkgZGVjb2RlZC4KICAgICAgICAgQVNTRVJUKGggPT0gaW1hZ2UuaGVpZ2h0KCkpOwotICAgICAg
ICBzdWJJbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhJbWFnZUluUmVjdCh0aWxlSW1h
Z2UsIHRpbGVSZWN0KSk7CisgICAgICAgIHN1YkltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRl
V2l0aEltYWdlSW5SZWN0KHRpbGVJbWFnZS5nZXQoKSwgdGlsZVJlY3QpKTsKICAgICB9CiAKICAg
ICAvLyBJZiB3ZSBuZWVkIHRvIHBhaW50IGdhcHMgYmV0d2VlbiB0aWxlcyBiZWNhdXNlIHdlIGhh
dmUgYSBwYXJ0aWFsbHkgbG9hZGVkIGltYWdlIG9yIG5vbi16ZXJvIHNwYWNpbmcsCiAgICAgLy8g
ZmFsbCBiYWNrIHRvIHRoZSBsZXNzIGVmZmljaWVudCBDR1BhdHRlcm4tYmFzZWQgbWVjaGFuaXNt
LgogICAgIGZsb2F0IHNjYWxlZFRpbGVXaWR0aCA9IHRpbGVSZWN0LndpZHRoKCkgKiBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHBhdHRlcm5UcmFuc2Zvcm0uYSgpKTsKLSAgICBmbG9hdCB3ID0gQ0dJ
bWFnZUdldFdpZHRoKHRpbGVJbWFnZSk7CisgICAgZmxvYXQgdyA9IENHSW1hZ2VHZXRXaWR0aCh0
aWxlSW1hZ2UuZ2V0KCkpOwogICAgIGlmICh3ID09IGltYWdlLnNpemUoKS53aWR0aCgpICYmIGgg
PT0gaW1hZ2Uuc2l6ZSgpLmhlaWdodCgpICYmICFzcGFjaW5nLndpZHRoKCkgJiYgIXNwYWNpbmcu
aGVpZ2h0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IENHIHNlZW1zIHRvIHNuYXAgdGhlIGltYWdl
cyB0byBpbnRlZ3JhbCBzaXplcy4gV2hlbiB3ZSBjYXJlIChlLmcuIHdpdGggYm9yZGVyLWltYWdl
LXJlcGVhdDogcm91bmQpLAogICAgICAgICAvLyB3ZSBzaG91bGQgdGlsZSBhbGwgYnV0IHRoZSBs
YXN0LCBhbmQgc3RldGNoIHRoZSBsYXN0IGltYWdlIHRvIGZpdC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUyNWFjNGFmMTMwMWU0YjViMWM3MjI2YTU1OWYyZjM5M2VkOGI0OTgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXIuY3Bw
CkBAIC0wLDAgKzEsNDEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgor
CisjaWYgVVNFKENHKQorCisjaW5jbHVkZSAiQ29yZUdyYXBoaWNzU1BJLmgiCisjaW5jbHVkZSAi
SW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50
U2l6ZS5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworI2lmICFQTEFURk9S
TShJT1MpCisjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2Vz
Lmg+CisjZWxzZQorI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNlbmRpZgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBv
cnQgPEltYWdlSU8vQ0dJbWFnZVNvdXJjZVByaXZhdGUuaD4KKyNlbHNlCitjb25zdCBDRlN0cmlu
Z1JlZiBrQ0dJbWFnZVNvdXJjZVN1YnNhbXBsZUZhY3RvciA9IENGU1RSKCJrQ0dJbWFnZVNvdXJj
ZVN1YnNhbXBsZUZhY3RvciIpOworY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTaG91
bGRDYWNoZUltbWVkaWF0ZWx5ID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU2hvdWxkQ2FjaGVJbW1l
ZGlhdGVseSIpOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NvbnN0IENG
U3RyaW5nUmVmIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HVW5jbGFtcGVkRGVsYXlUaW1lID0g
Q0ZTVFIoIlVuY2xhbXBlZERlbGF5VGltZSIpOworY29uc3QgQ0ZTdHJpbmdSZWYgV2ViQ29yZUNH
SW1hZ2VQcm9wZXJ0eUFQTkdEZWxheVRpbWUgPSBDRlNUUigiRGVsYXlUaW1lIik7Citjb25zdCBD
RlN0cmluZ1JlZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR0xvb3BDb3VudCA9IENGU1RSKCJM
b29wQ291bnQiKTsKKworY29uc3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTaG91bGRQcmVm
ZXJSR0IzMiA9IENGU1RSKCJrQ0dJbWFnZVNvdXJjZVNob3VsZFByZWZlclJHQjMyIik7Citjb25z
dCBDRlN0cmluZ1JlZiBrQ0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSA9IENGU1RSKCJrQ0dJbWFn
ZVNvdXJjZVNraXBNZXRhZGF0YSIpOworCitzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gY3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCwgRGVjb2RlTW9kZSBkZWNvZGVNb2RlKQoreworICAgIGNvbnN0IENGSW5kZXggYmFzaWNP
cHRpb25zID0gMzsKKyAgICBjb25zdCB2b2lkKiBrZXlzW2Jhc2ljT3B0aW9ucyArIDJdID0geyBr
Q0dJbWFnZVNvdXJjZVNob3VsZENhY2hlLCBrQ0dJbWFnZVNvdXJjZVNob3VsZFByZWZlclJHQjMy
LCBrQ0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSB9OworICAgIGNvbnN0IHZvaWQqIHZhbHVlc1ti
YXNpY09wdGlvbnMgKyAyXSA9IHsga0NGQm9vbGVhblRydWUsIGtDRkJvb2xlYW5UcnVlLCBrQ0ZC
b29sZWFuVHJ1ZSB9OworICAgIENGSW5kZXggbnVtT3B0aW9ucyA9IGJhc2ljT3B0aW9uczsKKyAg
ICAKKyAgICBpZiAoc3Vic2FtcGxpbmdMZXZlbCA+IDApIHsKKyAgICAgICAgc2hvcnQgY29uc3Ry
YWluZWRTdWJzYW1wbGluZ0xldmVsID0gc3RkOjptaW48c2hvcnQ+KDMsIHN0ZDo6bWF4PHNob3J0
PigwLCBzdWJzYW1wbGluZ0xldmVsKSk7CisgICAgICAgIGludCBzdWJzYW1wbGVJbnQgPSAxIDw8
IGNvbnN0cmFpbmVkU3Vic2FtcGxpbmdMZXZlbDsgLy8gWzAuLjNdID0+IFsxLCAyLCA0LCA4XQor
ICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN1YnNhbXBsZU51bWJlciA9IGFkb3B0Q0Yo
Q0ZOdW1iZXJDcmVhdGUobnVsbHB0ciwgIGtDRk51bWJlckludFR5cGUsICAmc3Vic2FtcGxlSW50
KSk7CisgICAgICAgIAorICAgICAgICBrZXlzW251bU9wdGlvbnNdID0ga0NHSW1hZ2VTb3VyY2VT
dWJzYW1wbGVGYWN0b3I7CisgICAgICAgIHZhbHVlc1tudW1PcHRpb25zKytdID0ga0NHSW1hZ2VT
b3VyY2VTdWJzYW1wbGVGYWN0b3I7CisgICAgfQorICAgIAorICAgIGlmIChkZWNvZGVNb2RlID09
IERlY29kZU1vZGU6OkltbWVkaWF0ZSkgeworICAgICAgICBrZXlzW251bU9wdGlvbnNdID0ga0NH
SW1hZ2VTb3VyY2VTaG91bGRDYWNoZUltbWVkaWF0ZWx5OworICAgICAgICB2YWx1ZXNbbnVtT3B0
aW9ucysrXSA9IGtDRkJvb2xlYW5UcnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGUobnVsbHB0ciwga2V5cywgdmFsdWVzLCBudW1PcHRpb25zLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBpbWFnZVNv
dXJjZU9wdGlvbnMoU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsID0gMCwgRGVjb2Rl
TW9kZSBkZWNvZGVNb2RlID0gRGVjb2RlTW9kZTo6TGF6eSkKK3sKKyAgICBpZiAoc3Vic2FtcGxp
bmdMZXZlbCB8fCBkZWNvZGVNb2RlID09IERlY29kZU1vZGU6OkltbWVkaWF0ZSkKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZUltYWdlU291cmNlT3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsLCBkZWNvZGVN
b2RlKTsKKyAgICAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4+IG9wdGlvbnMgPSBjcmVhdGVJbWFnZVNvdXJjZU9wdGlvbnMoMCwgRGVjb2RlTW9k
ZTo6TGF6eSk7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGltYWdlUHJvcGVy
dGllcykKK3sKKyAgICBBU1NFUlQoaW1hZ2VQcm9wZXJ0aWVzKTsKKyAgICBDRk51bWJlclJlZiBv
cmllbnRhdGlvblByb3BlcnR5ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGlt
YWdlUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eU9yaWVudGF0aW9uKTsKKyAgICBpZiAoIW9y
aWVudGF0aW9uUHJvcGVydHkpCisgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlv
bjsKKyAgICAKKyAgICBpbnQgZXhpZlZhbHVlOworICAgIENGTnVtYmVyR2V0VmFsdWUob3JpZW50
YXRpb25Qcm9wZXJ0eSwga0NGTnVtYmVySW50VHlwZSwgJmV4aWZWYWx1ZSk7CisgICAgcmV0dXJu
IEltYWdlT3JpZW50YXRpb246OmZyb21FWElGVmFsdWUoZXhpZlZhbHVlKTsKK30KKyAgICAKKyNp
ZiAhUExBVEZPUk0oQ09DT0EpCitzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9u
KHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkK
K3sKKyAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1
ZmZlcio+KGluZm8pOworICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXpl
KCk7CisgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIGNvbnN0IGNoYXIqIHNvdXJjZSA9IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpICsgcG9z
aXRpb247CisgICAgc2l6ZV90IGFtb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oY291bnQsIHNvdXJj
ZVNpemUgLSBwb3NpdGlvbik7CisgICAgbWVtY3B5KGJ1ZmZlciwgc291cmNlLCBhbW91bnQpOwor
ICAgIHJldHVybiBhbW91bnQ7Cit9CisKK3ZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBp
bmZvKQoreworICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hh
cmVkQnVmZmVyKj4oaW5mbyk7CisgICAgc2hhcmVkQnVmZmVyLT5kZXJlZigpOworfQorI2VuZGlm
CisKK0ltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKCkKK3sKKyAgICBtX25hdGl2ZURlY29kZXIg
PSBDR0ltYWdlU291cmNlQ3JlYXRlSW5jcmVtZW50YWwoMCk7Cit9CisKK1N1YnNhbXBsaW5nTGV2
ZWwgSW1hZ2VEZWNvZGVyOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQgc2NhbGUsIFN1
YnNhbXBsaW5nTGV2ZWwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpCit7CisgICAgLy8gVGhlcmUg
YXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgs
IDMgPSAwLjEyNXguCisgICAgZmxvYXQgY2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAu
MTI1LCBzdGQ6Om1pbjxmbG9hdD4oMSwgc2NhbGUpKTsKKyAgICBTdWJzYW1wbGluZ0xldmVsIHJl
c3VsdCA9IGNlaWxmKGxvZzJmKDEgLyBjbGFtcGVkU2NhbGUpKTsKKyAgICBBU1NFUlQocmVzdWx0
ID49MCAmJiByZXN1bHQgPD0gMyk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHJlc3VsdCwgbWF4aW11
bVN1YnNhbXBsaW5nTGV2ZWwpOworfQorCitzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQoreworICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcg
bWFsbG9jL2NhbGxvYyBjYWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCisgICAgLy8gQSBu
b24temVybyB2YWx1ZSBlbnN1cmVzIGNhY2hlZCBpbWFnZXMgd2l0aCBubyBkZWNvZGVkIGZyYW1l
cyBzdGlsbCBlbnRlcgorICAgIC8vIHRoZSBsaXZlIGRlY29kZWQgcmVzb3VyY2VzIGxpc3Qgd2hl
biB0aGUgQ0dJbWFnZVNvdXJjZSBkZWNvZGVzIGltYWdlCisgICAgLy8gcHJvcGVydGllcywgYWxs
b3dpbmcgdGhlIGNhY2hlIHRvIHBydW5lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBpbWFnZS4KKyAg
ICAvLyBUaGlzIHZhbHVlIGlzIGxpa2VseSB0byBiZSBpbmFjY3VyYXRlIG9uIG90aGVyIHBsYXRm
b3JtcywgYnV0IHRoZSBvdmVyYWxsCisgICAgLy8gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLgorICAg
IHJldHVybiAxMzA4ODsKK30KKworU3RyaW5nIEltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNp
b24oKSBjb25zdAoreworICAgIENGU3RyaW5nUmVmIGltYWdlU291cmNlVHlwZSA9IENHSW1hZ2VT
b3VyY2VHZXRUeXBlKG1fbmF0aXZlRGVjb2Rlcik7CisgICAgcmV0dXJuIFdlYkNvcmU6OnByZWZl
cnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShpbWFnZVNvdXJjZVR5cGUpOworfQorCiti
b29sIEltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkgY29uc3QKK3sKKyAgICAvLyBSYWdu
YXJvcyB5ZWxsczogVE9PIFNPT04hIFlvdSBoYXZlIGF3YWtlbmVkIG1lIFRPTyBTT09OLCBFeGVj
dXR1cyEKKyAgICBpZiAoQ0dJbWFnZVNvdXJjZUdldFN0YXR1cyhtX25hdGl2ZURlY29kZXIpIDwg
a0NHSW1hZ2VTdGF0dXNJbmNvbXBsZXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2UwUHJvcGVydGllcyA9IGFkb3B0Q0Yo
Q0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIsIDAsIGlt
YWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7CisgICAgaWYgKCFpbWFnZTBQcm9wZXJ0aWVzKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIENGRGljdGlvbmFyeUNvbnRh
aW5zS2V5KGltYWdlMFByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbFdpZHRo
KQorICAgICYmIENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGltYWdlMFByb3BlcnRpZXMuZ2V0KCks
IGtDR0ltYWdlUHJvcGVydHlQaXhlbEhlaWdodCk7Cit9CisKK0ludFNpemUgSW1hZ2VEZWNvZGVy
OjpzaXplKCkgY29uc3QKK3sKKyAgICBpZiAobV9zaXplLmlzRW1wdHkoKSkKKyAgICAgICAgbV9z
aXplID0gZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKKyAgICByZXR1cm4gbV9zaXplOworfQorCitz
aXplX3QgSW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQ0dJ
bWFnZVNvdXJjZUdldENvdW50KG1fbmF0aXZlRGVjb2Rlcik7Cit9CisKK2ludCBJbWFnZURlY29k
ZXI6OnJlcGV0aXRpb25Db3VudCgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzKG1f
bmF0aXZlRGVjb2RlciwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKKyAgICBpZiAoIXBy
b3BlcnRpZXMpCisgICAgICAgIHJldHVybiBjQW5pbWF0aW9uTG9vcE9uY2U7CisgICAgCisgICAg
Q0ZEaWN0aW9uYXJ5UmVmIGdpZlByb3BlcnRpZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlv
bmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlHSUZEaWN0aW9u
YXJ5KTsKKyAgICBpZiAoZ2lmUHJvcGVydGllcykgeworICAgICAgICBDRk51bWJlclJlZiBudW0g
PSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZ2lmUHJvcGVydGllcywga0NHSW1h
Z2VQcm9wZXJ0eUdJRkxvb3BDb3VudCk7CisgICAgICAgIAorICAgICAgICAvLyBObyBwcm9wZXJ0
eSBtZWFucyBsb29wIG9uY2UuCisgICAgICAgIGlmICghbnVtKQorICAgICAgICAgICAgcmV0dXJu
IGNBbmltYXRpb25Mb29wT25jZTsKKyAgICAgICAgCisgICAgICAgIGludCBsb29wQ291bnQ7Cisg
ICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmbG9vcENvdW50
KTsKKyAgICAgICAgCisgICAgICAgIC8vIEEgcHJvcGVydHkgd2l0aCB2YWx1ZSAwIG1lYW5zIGxv
b3AgZm9yZXZlci4KKyAgICAgICAgcmV0dXJuIGxvb3BDb3VudCA/IGxvb3BDb3VudCA6IGNBbmlt
YXRpb25Mb29wSW5maW5pdGU7CisgICAgfQorICAgIAorICAgIENGRGljdGlvbmFyeVJlZiBwbmdQ
cm9wZXJ0aWVzID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0
aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UE5HRGljdGlvbmFyeSk7CisgICAgaWYgKHBuZ1By
b3BlcnRpZXMpIHsKKyAgICAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGlj
dGlvbmFyeUdldFZhbHVlKHBuZ1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5H
TG9vcENvdW50KTsKKyAgICAgICAgaWYgKCFudW0pCisgICAgICAgICAgICByZXR1cm4gY0FuaW1h
dGlvbkxvb3BPbmNlOworICAgICAgICAKKyAgICAgICAgaW50IGxvb3BDb3VudDsKKyAgICAgICAg
Q0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZsb29wQ291bnQpOworICAg
ICAgICByZXR1cm4gbG9vcENvdW50ID8gbG9vcENvdW50IDogY0FuaW1hdGlvbkxvb3BJbmZpbml0
ZTsKKyAgICB9CisgICAgCisgICAgLy8gVHVybnMgb3V0IHdlJ3JlIG5vdCBhbiBhbmltYXRlZCBp
bWFnZSBhZnRlciBhbGwsIHNvIHdlIGRvbid0IGFuaW1hdGUuCisgICAgcmV0dXJuIGNBbmltYXRp
b25Ob25lOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6Z2V0SG90U3BvdChJbnRQb2ludCYgaG90
U3BvdCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVz
ID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVj
b2RlciwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKKyAgICBpZiAoIXByb3BlcnRp
ZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpbnQgeCA9IC0xLCB5ID0gLTE7
CisgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIpKTsKKyAgICBpZiAoIW51bSB8fCAh
Q0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ4KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRW
YWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBDRlNUUigiaG90c3BvdFkiKSk7CisgICAgaWYgKCFudW0g
fHwgIUNGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmeSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoeCA8IDAgfHwgeSA8IDApCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBob3RTcG90ID0gSW50UG9pbnQoeCwgeSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK0ludFNpemUgSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAorewor
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1h
Z2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLCBpbmRleCwgaW1h
Z2VTb3VyY2VPcHRpb25zKHN1YnNhbXBsaW5nTGV2ZWwpLmdldCgpKSk7CisgICAgCisgICAgaWYg
KCFwcm9wZXJ0aWVzKQorICAgICAgICByZXR1cm4geyB9OworICAgIAorICAgIGludCB3aWR0aCA9
IDA7CisgICAgaW50IGhlaWdodCA9IDA7CisgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVy
UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVy
dHlQaXhlbFdpZHRoKTsKKyAgICBpZiAobnVtKQorICAgICAgICBDRk51bWJlckdldFZhbHVlKG51
bSwga0NGTnVtYmVySW50VHlwZSwgJndpZHRoKTsKKyAgICAKKyAgICBudW0gPSAoQ0ZOdW1iZXJS
ZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0
eVBpeGVsSGVpZ2h0KTsKKyAgICBpZiAobnVtKQorICAgICAgICBDRk51bWJlckdldFZhbHVlKG51
bSwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodCk7CisgICAgCisgICAgcmV0dXJuIEludFNpemUo
d2lkdGgsIGhlaWdodCk7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsK
KyAgICByZXR1cm4gQ0dJbWFnZVNvdXJjZUdldFN0YXR1c0F0SW5kZXgobV9uYXRpdmVEZWNvZGVy
LCBpbmRleCkgPT0ga0NHSW1hZ2VTdGF0dXNDb21wbGV0ZTsKK30KKworSW1hZ2VPcmllbnRhdGlv
biBJbWFnZURlY29kZXI6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7
CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJ
bWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURlY29kZXIsIGluZGV4LCBp
bWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOworICAgIGlmICghcHJvcGVydGllcykKKyAgICAg
ICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOworICAgIAorICAgIHJldHVybiBvcmll
bnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOworfQorCitmbG9hdCBJbWFn
ZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAg
ICBmbG9hdCBkdXJhdGlvbiA9IDA7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJv
cGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25h
dGl2ZURlY29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOworICAgIGlm
IChwcm9wZXJ0aWVzKSB7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiBnaWZQcm9wZXJ0aWVzID0g
KENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBr
Q0dJbWFnZVByb3BlcnR5R0lGRGljdGlvbmFyeSk7CisgICAgICAgIGlmIChnaWZQcm9wZXJ0aWVz
KSB7CisgICAgICAgICAgICBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGlj
dGlvbmFyeUdldFZhbHVlKGdpZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVydHlHSUZVbmNsYW1w
ZWREZWxheVRpbWUpKSB7CisgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSB1bmNsYW1wZWQgZnJh
bWUgZGVsYXkgaWYgaXQgZXhpc3RzLgorICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUo
bnVtLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShn
aWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5R0lGRGVsYXlUaW1lKSkgeworICAgICAgICAg
ICAgICAgIC8vIEZhbGwgYmFjayB0byB0aGUgY2xhbXBlZCBmcmFtZSBkZWxheSBpZiB0aGUgdW5j
bGFtcGVkIGZyYW1lIGRlbGF5IGRvZXMgbm90IGV4aXN0LgorICAgICAgICAgICAgICAgIENGTnVt
YmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENGRGljdGlvbmFyeVJlZiBwbmdQ
cm9wZXJ0aWVzID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0
aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UE5HRGljdGlvbmFyeSk7CisgICAgICAgIGlmIChw
bmdQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVt
YmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHBuZ1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdl
UHJvcGVydHlBUE5HVW5jbGFtcGVkRGVsYXlUaW1lKSkKKyAgICAgICAgICAgICAgICBDRk51bWJl
ckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmZHVyYXRpb24pOworICAgICAgICAg
ICAgZWxzZSBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdl
dFZhbHVlKHBuZ1Byb3BlcnRpZXMsIFdlYkNvcmVDR0ltYWdlUHJvcGVydHlBUE5HRGVsYXlUaW1l
KSkKKyAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVyRmxvYXRU
eXBlLCAmZHVyYXRpb24pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIE1hbnkgYW5u
b3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMg
cXVpY2tseSBhcyBwb3NzaWJsZS4KKyAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9y
IGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5
CisgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5
MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+CisgICAgLy8gZm9yIG1vcmUgaW5m
b3JtYXRpb24uCisgICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQorICAgICAgICByZXR1cm4gMC4x
ZjsKKyAgICByZXR1cm4gZHVyYXRpb247Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjphbGxvd1N1
YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJv
cGVydGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5n
ZXQoKSkpOworICAgIGlmICghcHJvcGVydGllcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIENGRGljdGlvbmFyeVJlZiBqZmlmUHJvcGVydGllcyA9IHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1h
Z2VQcm9wZXJ0eUpGSUZEaWN0aW9uYXJ5KSk7CisgICAgaWYgKGpmaWZQcm9wZXJ0aWVzKSB7Cisg
ICAgICAgIENGQm9vbGVhblJlZiBpc1Byb2dDRkJvb2wgPSBzdGF0aWNfY2FzdDxDRkJvb2xlYW5S
ZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGpmaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5
SkZJRklzUHJvZ3Jlc3NpdmUpKTsKKyAgICAgICAgaWYgKGlzUHJvZ0NGQm9vbCkgeworICAgICAg
ICAgICAgYm9vbCBpc1Byb2dyZXNzaXZlID0gQ0ZCb29sZWFuR2V0VmFsdWUoaXNQcm9nQ0ZCb29s
KTsKKyAgICAgICAgICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS81MTg0NjU1
PiAtIEhhbmcgcmVuZGVyaW5nIHZlcnkgbGFyZ2UgcHJvZ3Jlc3NpdmUgSlBFRy4gRGVjb2Rpbmcg
cHJvZ3Jlc3NpdmUKKyAgICAgICAgICAgIC8vIGltYWdlcyBoYW5ncyBmb3IgYSB2ZXJ5IGxvbmcg
dGltZSByaWdodCBub3cuIFVudGlsIHRoaXMgaXMgZml4ZWQsIGRvbid0IHN1Yi1zYW1wbGUgcHJv
Z3Jlc3NpdmUgaW1hZ2VzLiBUaGlzCisgICAgICAgICAgICAvLyB3aWxsIGNhdXNlIHRoZW0gdG8g
ZmFpbCBvdXIgbGFyZ2UgaW1hZ2UgY2hlY2sgYW5kIHRoZXkgd29uJ3QgYmUgZGVjb2RlZC4KKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb25jZSB1bmRlcmx5aW5nIGlzc3VlIGlzIGZpeGVk
ICg8cmRhcjovL3Byb2JsZW0vNTE5MTQxOD4pCisgICAgICAgICAgICByZXR1cm4gIWlzUHJvZ3Jl
c3NpdmU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
Cit7CisgICAgaWYgKCFmcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgCisgICAgQ0ZTdHJpbmdSZWYgaW1hZ2VUeXBlID0gQ0dJbWFnZVNvdXJj
ZUdldFR5cGUobV9uYXRpdmVEZWNvZGVyKTsKKyAgICAKKyAgICAvLyBSZXR1cm4gZmFsc2UgaWYg
dGhlcmUgaXMgbm8gaW1hZ2UgdHlwZSBvciB0aGUgaW1hZ2UgdHlwZSBpcyBKUEVHLCBiZWNhdXNl
CisgICAgLy8gSlBFRyBkb2VzIG5vdCBzdXBwb3J0IGFscGhhIHRyYW5zcGFyZW5jeS4KKyAgICBp
ZiAoIWltYWdlVHlwZSB8fCBDRkVxdWFsKGltYWdlVHlwZSwgQ0ZTVFIoInB1YmxpYy5qcGVnIikp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gRklYTUU6IENvdWxkIHJldHVy
biBmYWxzZSBmb3Igb3RoZXIgbm9uLXRyYW5zcGFyZW50IGltYWdlIGZvcm1hdHMuCisgICAgLy8g
RklYTUU6IENvdWxkIG1heWJlIHJldHVybiBmYWxzZSBmb3IgYSBHSUYgRnJhbWUgaWYgd2UgaGF2
ZSBlbm91Z2ggaW5mbyBpbiB0aGUgR0lGIHByb3BlcnRpZXMgZGljdGlvbmFyeQorICAgIC8vIHRv
IGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhIHRyYW5zcGFyZW50IGNvbG9yIHdhcyBkZWZpbmVk
LgorICAgIHJldHVybiB0cnVlOworfQorCit1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVs
KSBjb25zdAoreworICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgcmV0dXJuIGZyYW1lU2l6ZS53aWR0aCgpICogZnJh
bWVTaXplLmhlaWdodCgpICogNDsKK30KKworUGFzc05hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rl
cjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIERlY29kZU1vZGUgZGVjb2RlTW9kZSkgY29uc3QKK3sKKyAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJ
bWFnZUF0SW5kZXgobV9uYXRpdmVEZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKHN1
YnNhbXBsaW5nTGV2ZWwsIGRlY29kZU1vZGUpLmdldCgpKSk7CisgICAgICAgIAorI2lmIFBMQVRG
T1JNKElPUykKKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzM3MTE5OD4gLSBDb3JlR3JhcGhpY3Mg
Y2hhbmdlZCB0aGUgZGVmYXVsdCBjYWNoaW5nIGJlaGF2aW91ciBpbiBpT1MgNC4wIHRvIGtDR0lt
YWdlQ2FjaGluZ1RyYW5zaWVudAorICAgIC8vIHdoaWNoIGNhdXNlZCBhIHBlcmZvcm1hbmNlIHJl
Z3Jlc3Npb24gZm9yIHVzIHNpbmNlIHRoZSBpbWFnZXMgaGFkIHRvIGJlIHJlc2FtcGxlZC9yZWNy
ZWF0ZWQgZXZlcnkgdGltZSB3ZSBjYWxsZWQKKyAgICAvLyBDR0NvbnRleHREcmF3SW1hZ2UuIFdl
IG5vdyB0ZWxsIENHIHRvIGNhY2hlIHRoZSBkcmF3biBpbWFnZXMuIFNlZSBhbHNvIDxyZGFyOi8v
cHJvYmxlbS8xNDM2Njc1NT4gLQorICAgIC8vIENvcmVHcmFwaGljcyBuZWVkcyB0byB1bi1kZXBy
ZWNhdGUga0NHSW1hZ2VDYWNoaW5nVGVtcG9yYXJ5IHNpbmNlIGl0J3Mgc3RpbGwgbm90IHRoZSBk
ZWZhdWx0LgorI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1
c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFy
YXRpb25zIgorI2VuZGlmCisgICAgICAgIENHSW1hZ2VTZXRDYWNoaW5nRmxhZ3MoaW1hZ2UuZ2V0
KCksIGtDR0ltYWdlQ2FjaGluZ1RlbXBvcmFyeSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShJT1Mp
CisgICAgICAgIAorICAgIENGU3RyaW5nUmVmIGltYWdlVVRJID0gQ0dJbWFnZVNvdXJjZUdldFR5
cGUobV9uYXRpdmVEZWNvZGVyKTsKKyAgICBzdGF0aWMgY29uc3QgQ0ZTdHJpbmdSZWYgeGJtVVRJ
ID0gQ0ZTVFIoInB1YmxpYy54Yml0bWFwLWltYWdlIik7CisKKyAgICBpZiAoIWltYWdlVVRJKQor
ICAgICAgICByZXR1cm4gaW1hZ2U7CisKKyAgICBpZiAoIUNGRXF1YWwoaW1hZ2VVVEksIHhibVVU
SSkpCisgICAgICAgIHJldHVybiBpbWFnZTsKKworICAgIC8vIElmIGl0IGlzIGFuIHhibSBpbWFn
ZSwgbWFzayBvdXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byByZW5kZXIgdGhlbSB0cmFuc3BhcmVu
dC4KKyAgICBjb25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNbNl0gPSB7MjU1LCAyNTUsICAyNTUs
IDI1NSwgMjU1LCAyNTV9OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYXNrZWRJbWFnZSA9
IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZVdpdGhNYXNraW5nQ29sb3JzKGltYWdlLmdldCgpLCBtYXNr
aW5nQ29sb3JzKSk7CisgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFn
ZTsKK30KKyAgICAKK3ZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLy8g
T24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5
IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KKyAgICAv
LyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZE
YXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8g
cmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICBDR0ltYWdlU291cmNlVXBk
YXRlRGF0YShtX25hdGl2ZURlY29kZXIsIGRhdGEtPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxE
YXRhUmVjZWl2ZWQpOworI2Vsc2UKKyAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3
cmFwIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgZGF0YS0+cmVmKCk7CisgICAgLy8gV2UgdXNlIHRo
ZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2lu
dGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgorICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3
YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdv
bid0IG1vdmUsIHdoaWNoCisgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdl
dEJ5dGVQb2ludGVyIGNhbGxiYWNrLgorICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tz
IHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9z
aXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3Qo
ZGF0YSwgZGF0YS0+c2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBDR0ltYWdlU291
cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2RlciwgZGF0YVByb3ZpZGVyLmdldCgp
LCBhbGxEYXRhUmVjZWl2ZWQpOworI2VuZGlmCit9CisKK30KKworI2VuZGlmIC8vIFVTRShDRykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTU2MWFiOWUxNzc5MTcyYmYzZWQyN2ZhMDQwYTBlNDE5MWJhMTY2ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2Rlci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlRGVjb2Rlcl9oCisjZGVmaW5lIEltYWdl
RGVjb2Rlcl9oCisKKyNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgorI2luY2x1ZGUgIkludFNpemUu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9y
SW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CisKK2VudW0gY2xhc3MgRGVjb2Rl
TW9kZSB7IEltbWVkaWF0ZSwgTGF6eSB9OworCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNz
IEltYWdlRGVjb2RlciB7CitwdWJsaWM6CisgICAgSW1hZ2VEZWNvZGVyKCk7CisgICAgdmlydHVh
bCB+SW1hZ2VEZWNvZGVyKCkgeyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRv
RGV0ZXJtaW5lUHJvcGVydGllcygpOworICAgIHN0YXRpYyBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2FsZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbCk7CisKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25z
dDsKKyAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIGNvbnN0OworICAgIEludFNpemUgc2l6ZSgp
IGNvbnN0OworICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7CisgICAgaW50IHJlcGV0aXRp
b25Db3VudCgpIGNvbnN0OworICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYgaG90U3BvdCkg
Y29uc3Q7CisKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsKSBjb25zdDsKKyAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBj
b25zdDsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNv
bnN0OworCisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAg
ICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBhbGxv
d1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKwor
ICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwsIERlY29kZU1vZGUgPSBEZWNvZGVNb2RlOjpMYXp5KSBjb25zdDsKKwor
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgCitwcm90ZWN0ZWQ6CisgICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZTsKKyAgICBDR0ltYWdl
U291cmNlUmVmIG1fbmF0aXZlRGVjb2RlcjsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBJbWFn
ZURlY29kZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHLmNwcAppbmRleCBkNGEwMTJiNmY1N2JmNTM5MzA2NDc3N2I2YzEwOTM2
NmIyNGM0NDVjLi5kY2Y3OWE3MmExNWU5Zjc5NDBmYWRhNmQ2MTk1YjhjZDQzNTQzM2IzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKIAog
I2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgog
I2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKQEAgLTQ0LDQ0ICs0NSw5IEBACiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8
SW1hZ2VJTy9DR0ltYWdlU291cmNlUHJpdmF0ZS5oPgotI2Vsc2UKLWNvbnN0IENGU3RyaW5nUmVm
IGtDR0ltYWdlU291cmNlU3Vic2FtcGxlRmFjdG9yID0gQ0ZTVFIoImtDR0ltYWdlU291cmNlU3Vi
c2FtcGxlRmFjdG9yIik7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBD
RlN0cmluZ1JlZiBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR1VuY2xhbXBlZERlbGF5VGltZSA9
IENGU1RSKCJVbmNsYW1wZWREZWxheVRpbWUiKTsKLWNvbnN0IENGU3RyaW5nUmVmIFdlYkNvcmVD
R0ltYWdlUHJvcGVydHlBUE5HRGVsYXlUaW1lID0gQ0ZTVFIoIkRlbGF5VGltZSIpOwotY29uc3Qg
Q0ZTdHJpbmdSZWYgV2ViQ29yZUNHSW1hZ2VQcm9wZXJ0eUFQTkdMb29wQ291bnQgPSBDRlNUUigi
TG9vcENvdW50Iik7Ci0KLWNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291cmNlU2hvdWxkUHJl
ZmVyUkdCMzIgPSBDRlNUUigia0NHSW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0IzMiIpOwotY29u
c3QgQ0ZTdHJpbmdSZWYga0NHSW1hZ2VTb3VyY2VTa2lwTWV0YWRhdGEgPSBDRlNUUigia0NHSW1h
Z2VTb3VyY2VTa2lwTWV0YWRhdGEiKTsKLQotI2lmICFQTEFURk9STShDT0NPQSkKLXNpemVfdCBz
aGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBv
ZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQotewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7Ci0gICAgc2l6ZV90IHNv
dXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKLSAgICBpZiAocG9zaXRpb24gPj0gc291
cmNlU2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBjaGFyKiBzb3VyY2UgPSBz
aGFyZWRCdWZmZXItPmRhdGEoKSArIHBvc2l0aW9uOwotICAgIHNpemVfdCBhbW91bnQgPSBzdGQ6
Om1pbjxzaXplX3Q+KGNvdW50LCBzb3VyY2VTaXplIC0gcG9zaXRpb24pOwotICAgIG1lbWNweShi
dWZmZXIsIHNvdXJjZSwgYW1vdW50KTsKLSAgICByZXR1cm4gYW1vdW50OwotfQotCi12b2lkIHNo
YXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKLXsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJl
ZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwotICAgIHNoYXJlZEJ1
ZmZlci0+ZGVyZWYoKTsKLX0KLSNlbmRpZgotCiBJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UoSW1h
Z2VTb3VyY2U6OkFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCi0gICAgOiBtX2RlY29kZXIoMCkKIHsKICAgICAvLyBGSVhNRTogQWxwaGFPcHRpb24g
YW5kIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGFyZSBpZ25vcmVkLgogfQpAQCAtMTAwLDM1
NCArNjYsMTI5IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OmNsZWFyKGJvb2wgZGVzdHJveUFsbEZyYW1l
cywgc2l6ZV90LCBTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1fZGVjb2RlcikgewotICAgICAgICBDRlJlbGVhc2UobV9kZWNvZGVyKTsKKyAgICAg
ICAgZGVsZXRlIG1fZGVjb2RlcjsKICAgICAgICAgbV9kZWNvZGVyID0gMDsKICAgICB9CisgICAg
CiAgICAgaWYgKGRhdGEpCiAgICAgICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsK
IH0KLQotc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUltYWdlU291cmNl
T3B0aW9ucyhTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCisgICAgCit2b2lkIElt
YWdlU291cmNlOjplbnN1cmVEZWNvZGVySXNDcmVhdGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsK
LSAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwpIHsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgbnVt
T3B0aW9ucyA9IDM7Ci0gICAgICAgIGNvbnN0IHZvaWQqIGtleXNbbnVtT3B0aW9uc10gPSB7IGtD
R0ltYWdlU291cmNlU2hvdWxkQ2FjaGUsIGtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdCMzIs
IGtDR0ltYWdlU291cmNlU2tpcE1ldGFkYXRhIH07Ci0gICAgICAgIGNvbnN0IHZvaWQqIHZhbHVl
c1tudW1PcHRpb25zXSA9IHsga0NGQm9vbGVhblRydWUsIGtDRkJvb2xlYW5UcnVlLCBrQ0ZCb29s
ZWFuVHJ1ZSB9OwotICAgICAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKG51bGxwdHIsIGtl
eXMsIHZhbHVlcywgbnVtT3B0aW9ucywgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgfQotCi0gICAgc2hvcnQgY29u
c3RyYWluZWRTdWJzYW1wbGluZ0xldmVsID0gc3RkOjptaW48c2hvcnQ+KDMsIHN0ZDo6bWF4PHNo
b3J0PigwLCBzdWJzYW1wbGluZ0xldmVsKSk7Ci0gICAgaW50IHN1YnNhbXBsZUludCA9IDEgPDwg
Y29uc3RyYWluZWRTdWJzYW1wbGluZ0xldmVsOyAvLyBbMC4uM10gPT4gWzEsIDIsIDQsIDhdCi0K
LSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN1YnNhbXBsZU51bWJlciA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUobnVsbHB0ciwgIGtDRk51bWJlckludFR5cGUsICAmc3Vic2FtcGxlSW50KSk7
Ci0gICAgY29uc3QgQ0ZJbmRleCBudW1PcHRpb25zID0gNDsKLSAgICBjb25zdCB2b2lkKiBrZXlz
W251bU9wdGlvbnNdID0geyBrQ0dJbWFnZVNvdXJjZVNob3VsZENhY2hlLCBrQ0dJbWFnZVNvdXJj
ZVNob3VsZFByZWZlclJHQjMyLCBrQ0dJbWFnZVNvdXJjZVNraXBNZXRhZGF0YSwga0NHSW1hZ2VT
b3VyY2VTdWJzYW1wbGVGYWN0b3IgfTsKLSAgICBjb25zdCB2b2lkKiB2YWx1ZXNbbnVtT3B0aW9u
c10gPSB7IGtDRkJvb2xlYW5UcnVlLCBrQ0ZCb29sZWFuVHJ1ZSwga0NGQm9vbGVhblRydWUsIHN1
YnNhbXBsZU51bWJlci5nZXQoKSB9OwotICAgIHJldHVybiBhZG9wdENGKENGRGljdGlvbmFyeUNy
ZWF0ZShudWxscHRyLCBrZXlzLCB2YWx1ZXMsIG51bU9wdGlvbnMsICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBV
TlVTRURfUEFSQU0oZGF0YSk7CisgICAgCisgICAgaWYgKG1fZGVjb2RlcikKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIG1fZGVjb2RlciA9IG5ldyBJbWFnZURlY29kZXIoKTsKIH0KLQotc3Rh
dGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGltYWdlU291cmNlT3B0aW9ucyhTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwgPSAwKQorICAgIAordm9pZCBJbWFnZVNvdXJjZTo6
c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAg
IGlmIChzdWJzYW1wbGluZ0xldmVsKQotICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VTb3VyY2VP
cHRpb25zKHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJu
OwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
PiBvcHRpb25zID0gY3JlYXRlSW1hZ2VTb3VyY2VPcHRpb25zKDApOwotICAgIHJldHVybiBvcHRp
b25zOwotfQorICAgIGVuc3VyZURlY29kZXJJc0NyZWF0ZWQoZGF0YSk7CisgICAgaWYgKCFtX2Rl
Y29kZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmluaXRpYWxpemVkKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9kZWNvZGVyOworICAgIG1fZGVjb2Rlci0+c2V0RGF0YShkYXRhLCBhbGxEYXRhUmVj
ZWl2ZWQpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitTdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoIW1fZGVjb2Rl
cikKLSAgICAgICAgbV9kZWNvZGVyID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKDAp
OwotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBi
ZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVk
Z2UuICBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eQotICAgIC8vIHRvIHdyYXAgaXRzZWxm
IGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8g
aXMgcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNl
VXBkYXRlRGF0YShtX2RlY29kZXIsIGRhdGEtPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRh
UmVjZWl2ZWQpOwotI2Vsc2UKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgbV9kZWNvZGVy
ID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKDApOwotICAgIC8vIENyZWF0ZSBhIENH
RGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLT5yZWYoKTsK
LSAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhh
biB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCi0gICAgLy8gZG9l
cyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3Vh
cmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKLSAgICAvLyBpcyBhIHJlcXVpcmVtZW50
IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCi0gICAgQ0dEYXRhUHJvdmlk
ZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1
ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92
aWRlckNyZWF0ZURpcmVjdChkYXRhLCBkYXRhLT5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykp
OwotICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9kZWNvZGVyLCBkYXRhUHJv
dmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7Ci0jZW5kaWYKKyAgICByZXR1cm4gaW5pdGlh
bGl6ZWQoKSA/IG1fZGVjb2Rlci0+ZmlsZW5hbWVFeHRlbnNpb24oKSA6IFN0cmluZygpOwogfQog
Ci1TdHJpbmcgSW1hZ2VTb3VyY2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKK1N1YnNhbXBs
aW5nTGV2ZWwgSW1hZ2VTb3VyY2U6OnN1YnNhbXBsaW5nTGV2ZWxGb3JTY2FsZShmbG9hdCBzY2Fs
ZSwgU3Vic2FtcGxpbmdMZXZlbCBtYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIENGU3RyaW5n
UmVmIGltYWdlU291cmNlVHlwZSA9IENHSW1hZ2VTb3VyY2VHZXRUeXBlKG1fZGVjb2Rlcik7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShp
bWFnZVNvdXJjZVR5cGUpOworICAgIHJldHVybiBJbWFnZURlY29kZXI6OnN1YnNhbXBsaW5nTGV2
ZWxGb3JTY2FsZShzY2FsZSwgbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwpOwogfQorICAgIAogCi1T
dWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjpzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxv
YXQgc2NhbGUpIGNvbnN0CitzaXplX3QgSW1hZ2VTb3VyY2U6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJt
aW5lUHJvcGVydGllcygpIGNvbnN0CiB7Ci0gICAgLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxp
bmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCi0gICAg
ZmxvYXQgY2xhbXBlZFNjYWxlID0gc3RkOjptYXg8ZmxvYXQ+KDAuMTI1LCBzdGQ6Om1pbjxmbG9h
dD4oMSwgc2NhbGUpKTsKLSAgICBpbnQgcmVzdWx0ID0gY2VpbGYobG9nMmYoMSAvIGNsYW1wZWRT
Y2FsZSkpOwotICAgIEFTU0VSVChyZXN1bHQgPj0wICYmIHJlc3VsdCA8PSAzKTsKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIHJldHVybiBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJt
aW5lUHJvcGVydGllcygpOwogfQotCisgICAgCiBib29sIEltYWdlU291cmNlOjppc1NpemVBdmFp
bGFibGUoKQogewotICAgIC8vIFJhZ25hcm9zIHllbGxzOiBUT08gU09PTiEgWW91IGhhdmUgYXdh
a2VuZWQgbWUgVE9PIFNPT04sIEV4ZWN1dHVzIQotICAgIGlmIChDR0ltYWdlU291cmNlR2V0U3Rh
dHVzKG1fZGVjb2RlcikgPCBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGltYWdlMFByb3BlcnRp
ZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVy
LCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwotICAgIGlmICghaW1hZ2UwUHJvcGVy
dGllcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIENGRGljdGlvbmFyeUNv
bnRhaW5zS2V5KGltYWdlMFByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbFdp
ZHRoKQotICAgICAgICAmJiBDRkRpY3Rpb25hcnlDb250YWluc0tleShpbWFnZTBQcm9wZXJ0aWVz
LmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxIZWlnaHQpOworICAgIHJldHVybiBtX2RlY29k
ZXIgJiYgbV9kZWNvZGVyLT5pc1NpemVBdmFpbGFibGUoKTsKIH0KIAotc3RhdGljIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb25Gcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1hZ2VQ
cm9wZXJ0aWVzKQorYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdElu
ZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaW1hZ2VQcm9wZXJ0aWVzKTsK
LSAgICBDRk51bWJlclJlZiBvcmllbnRhdGlvblByb3BlcnR5ID0gKENGTnVtYmVyUmVmKUNGRGlj
dGlvbmFyeUdldFZhbHVlKGltYWdlUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0eU9yaWVudGF0
aW9uKTsKLSAgICBpZiAoIW9yaWVudGF0aW9uUHJvcGVydHkpCi0gICAgICAgIHJldHVybiBEZWZh
dWx0SW1hZ2VPcmllbnRhdGlvbjsKLQotICAgIGludCBleGlmVmFsdWU7Ci0gICAgQ0ZOdW1iZXJH
ZXRWYWx1ZShvcmllbnRhdGlvblByb3BlcnR5LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmZXhpZlZhbHVl
KTsKLSAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6ZnJvbUVYSUZWYWx1ZShleGlmVmFsdWUp
OworICAgIHJldHVybiBpbml0aWFsaXplZCgpICYmIG1fZGVjb2Rlci0+YWxsb3dTdWJzYW1wbGlu
Z09mRnJhbWVBdEluZGV4KGluZGV4KTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6YWxsb3dTdWJz
YW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3QKK0ludFNpemUgSW1hZ2VTb3VyY2U6
OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBzaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbikgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9w
ZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fZGVj
b2RlciwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKLSAgICBpZiAoIXByb3BlcnRp
ZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENGRGljdGlvbmFyeVJlZiBqZmlmUHJv
cGVydGllcyA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eUpGSUZEaWN0aW9uYXJ5KSk7Ci0g
ICAgaWYgKGpmaWZQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIENGQm9vbGVhblJlZiBpc1Byb2dDRkJv
b2wgPSBzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGpmaWZQ
cm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5SkZJRklzUHJvZ3Jlc3NpdmUpKTsKLSAgICAgICAg
aWYgKGlzUHJvZ0NGQm9vbCkgewotICAgICAgICAgICAgYm9vbCBpc1Byb2dyZXNzaXZlID0gQ0ZC
b29sZWFuR2V0VmFsdWUoaXNQcm9nQ0ZCb29sKTsKLSAgICAgICAgICAgIC8vIFdvcmthcm91bmQg
Zm9yIDxyZGFyOi8vcHJvYmxlbS81MTg0NjU1PiAtIEhhbmcgcmVuZGVyaW5nIHZlcnkgbGFyZ2Ug
cHJvZ3Jlc3NpdmUgSlBFRy4gRGVjb2RpbmcgcHJvZ3Jlc3NpdmUKLSAgICAgICAgICAgIC8vIGlt
YWdlcyBoYW5ncyBmb3IgYSB2ZXJ5IGxvbmcgdGltZSByaWdodCBub3cuIFVudGlsIHRoaXMgaXMg
Zml4ZWQsIGRvbid0IHN1Yi1zYW1wbGUgcHJvZ3Jlc3NpdmUgaW1hZ2VzLiBUaGlzCi0gICAgICAg
ICAgICAvLyB3aWxsIGNhdXNlIHRoZW0gdG8gZmFpbCBvdXIgbGFyZ2UgaW1hZ2UgY2hlY2sgYW5k
IHRoZXkgd29uJ3QgYmUgZGVjb2RlZC4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgb25j
ZSB1bmRlcmx5aW5nIGlzc3VlIGlzIGZpeGVkICg8cmRhcjovL3Byb2JsZW0vNTE5MTQxOD4pCi0g
ICAgICAgICAgICByZXR1cm4gIWlzUHJvZ3Jlc3NpdmU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotSW50U2l6ZSBJbWFnZVNvdXJjZTo6ZnJhbWVTaXplQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKSBjb25zdAotewotICAgIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5
UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKHN1
YnNhbXBsaW5nTGV2ZWwpLmdldCgpKSk7Ci0KLSAgICBpZiAoIXByb3BlcnRpZXMpCisgICAgaWYg
KCFpbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCi0gICAgaW50IHdp
ZHRoID0gMDsKLSAgICBpbnQgaGVpZ2h0ID0gMDsKLSAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZO
dW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQ
cm9wZXJ0eVBpeGVsV2lkdGgpOwotICAgIGlmIChudW0pCi0gICAgICAgIENGTnVtYmVyR2V0VmFs
dWUobnVtLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmd2lkdGgpOwotICAgIG51bSA9IChDRk51bWJlclJl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5
UGl4ZWxIZWlnaHQpOwotICAgIGlmIChudW0pCi0gICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVt
LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaGVpZ2h0KTsKLQotICAgIGlmICgoZGVzY3JpcHRpb24ucmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgJiYgb3Jp
ZW50YXRpb25Gcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzLmdldCgpKS51c2VzV2lkdGhBc0hlaWdo
dCgpKQotICAgICAgICByZXR1cm4gSW50U2l6ZShoZWlnaHQsIHdpZHRoKTsKKyAgICBJbnRTaXpl
IHNpemUgPSBtX2RlY29kZXItPmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwpOworICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBtX2RlY29kZXItPm9yaWVu
dGF0aW9uQXRJbmRleChpbmRleCk7CiAKLSAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0
KTsKKyAgICByZXR1cm4gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdElt
YWdlT3JpZW50YXRpb24gJiYgb3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSA/IHNpemUu
dHJhbnNwb3NlZFNpemUoKSA6IHNpemU7CiB9CiAKIEltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3Vy
Y2U6Om9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiB7Ci0gICAgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNv
cHlQcm9wZXJ0aWVzQXRJbmRleChtX2RlY29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMo
KS5nZXQoKSkpOwotICAgIGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIERlZmF1bHRJ
bWFnZU9yaWVudGF0aW9uOwotCi0gICAgcmV0dXJuIG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMo
cHJvcGVydGllcy5nZXQoKSk7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2RlY29kZXIt
Pm9yaWVudGF0aW9uQXRJbmRleChpbmRleCkgOiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKIH0K
IAotSW50U2l6ZSBJbWFnZVNvdXJjZTo6c2l6ZShJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24g
ZGVzY3JpcHRpb24pIGNvbnN0CitJbnRTaXplIEltYWdlU291cmNlOjpzaXplKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBkZXNjcmlwdGlvbik7CisgICAgcmV0
dXJuIGZyYW1lU2l6ZUF0SW5kZXgoMCwgMCk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmdldEhv
dFNwb3QoSW50UG9pbnQmIGhvdFNwb3QpIGNvbnN0CitJbnRTaXplIEltYWdlU291cmNlOjpzaXpl
UmVzcGVjdGluZ09yaWVudGF0aW9uKCkgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNB
dEluZGV4KG1fZGVjb2RlciwgMCwgaW1hZ2VTb3VyY2VPcHRpb25zKCkuZ2V0KCkpKTsKLSAgICBp
ZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGludCB4ID0gLTEs
IHkgPSAtMTsKLSAgICBDRk51bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RYIikpOwotICAgIGlmICgh
bnVtIHx8ICFDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJngpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RZIikpOwotICAgIGlmICgh
bnVtIHx8ICFDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJnkpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoeCA8IDAgfHwgeSA8IDApCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGhvdFNwb3QgPSBJbnRQb2ludCh4LCB5KTsKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gZnJhbWVTaXplQXRJbmRleCgwLCAwLCBSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbik7CiB9CiAKLXNpemVfdCBJbWFnZVNvdXJjZTo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1p
bmVQcm9wZXJ0aWVzKCkgY29uc3QKK2Jvb2wgSW1hZ2VTb3VyY2U6OmdldEhvdFNwb3QoSW50UG9p
bnQmIGhvdFNwb3QpIGNvbnN0CiB7Ci0gICAgLy8gTWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2Mv
Y2FsbG9jIGNhbGxzIG9uIE1hYyBPUyAxMC42LjYsIHg4Nl82NC4KLSAgICAvLyBBIG5vbi16ZXJv
IHZhbHVlIGVuc3VyZXMgY2FjaGVkIGltYWdlcyB3aXRoIG5vIGRlY29kZWQgZnJhbWVzIHN0aWxs
IGVudGVyCi0gICAgLy8gdGhlIGxpdmUgZGVjb2RlZCByZXNvdXJjZXMgbGlzdCB3aGVuIHRoZSBD
R0ltYWdlU291cmNlIGRlY29kZXMgaW1hZ2UKLSAgICAvLyBwcm9wZXJ0aWVzLCBhbGxvd2luZyB0
aGUgY2FjaGUgdG8gcHJ1bmUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGltYWdlLgotICAgIC8vIFRo
aXMgdmFsdWUgaXMgbGlrZWx5IHRvIGJlIGluYWNjdXJhdGUgb24gb3RoZXIgcGxhdGZvcm1zLCBi
dXQgdGhlIG92ZXJhbGwKLSAgICAvLyBiZWhhdmlvciBpcyB1bmNoYW5nZWQuCi0gICAgcmV0dXJu
IDEzMDg4OworICAgIHJldHVybiBtX2RlY29kZXIgJiYgbV9kZWNvZGVyLT5nZXRIb3RTcG90KGhv
dFNwb3QpOwogfQotICAgIAorCiBpbnQgSW1hZ2VTb3VyY2U6OnJlcGV0aXRpb25Db3VudCgpCiB7
Ci0gICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4gY0FuaW1hdGlvbkxvb3BP
bmNlOwotCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0
Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzKG1fZGVjb2RlciwgaW1hZ2VTb3VyY2VPcHRp
b25zKCkuZ2V0KCkpKTsKLSAgICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgIHJldHVybiBjQW5p
bWF0aW9uTG9vcE9uY2U7Ci0KLSAgICBDRkRpY3Rpb25hcnlSZWYgZ2lmUHJvcGVydGllcyA9IChD
RkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwga0NH
SW1hZ2VQcm9wZXJ0eUdJRkRpY3Rpb25hcnkpOwotICAgIGlmIChnaWZQcm9wZXJ0aWVzKSB7Ci0g
ICAgICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShnaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5R0lGTG9vcENvdW50KTsKLQotICAgICAg
ICAvLyBObyBwcm9wZXJ0eSBtZWFucyBsb29wIG9uY2UuCi0gICAgICAgIGlmICghbnVtKQotICAg
ICAgICAgICAgcmV0dXJuIGNBbmltYXRpb25Mb29wT25jZTsKLQotICAgICAgICBpbnQgbG9vcENv
dW50OwotICAgICAgICBDRk51bWJlckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJmxv
b3BDb3VudCk7Ci0KLSAgICAgICAgLy8gQSBwcm9wZXJ0eSB3aXRoIHZhbHVlIDAgbWVhbnMgbG9v
cCBmb3JldmVyLgotICAgICAgICByZXR1cm4gbG9vcENvdW50ID8gbG9vcENvdW50IDogY0FuaW1h
dGlvbkxvb3BJbmZpbml0ZTsKLSAgICB9Ci0KLSAgICBDRkRpY3Rpb25hcnlSZWYgcG5nUHJvcGVy
dGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5n
ZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBOR0RpY3Rpb25hcnkpOwotICAgIGlmIChwbmdQcm9wZXJ0
aWVzKSB7Ci0gICAgICAgIENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25h
cnlHZXRWYWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR0xvb3BD
b3VudCk7Ci0gICAgICAgIGlmICghbnVtKQotICAgICAgICAgICAgcmV0dXJuIGNBbmltYXRpb25M
b29wT25jZTsKLQotICAgICAgICBpbnQgbG9vcENvdW50OwotICAgICAgICBDRk51bWJlckdldFZh
bHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJmxvb3BDb3VudCk7Ci0gICAgICAgIHJldHVybiBs
b29wQ291bnQgPyBsb29wQ291bnQgOiBjQW5pbWF0aW9uTG9vcEluZmluaXRlOwotICAgIH0KLQot
ICAgIC8vIFR1cm5zIG91dCB3ZSdyZSBub3QgYW4gYW5pbWF0ZWQgaW1hZ2UgYWZ0ZXIgYWxsLCBz
byB3ZSBkb24ndCBhbmltYXRlLgotICAgIHJldHVybiBjQW5pbWF0aW9uTm9uZTsKKyAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkgOiBjQW5pbWF0
aW9uTG9vcE9uY2U7CiB9CiAKIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fZGVjb2RlciA/IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2RlY29k
ZXIpIDogMDsKKyAgICByZXR1cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkg
OiAwOwogfQogCi1DR0ltYWdlUmVmIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCitQYXNzTmF0aXZl
SW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewotICAgIGlmICghaW5pdGlh
bGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgobV9k
ZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25zKHN1YnNhbXBsaW5nTGV2ZWwpLmdldCgp
KSk7Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzczNzExOTg+
IC0gQ29yZUdyYXBoaWNzIGNoYW5nZWQgdGhlIGRlZmF1bHQgY2FjaGluZyBiZWhhdmlvdXIgaW4g
aU9TIDQuMCB0byBrQ0dJbWFnZUNhY2hpbmdUcmFuc2llbnQKLSAgICAvLyB3aGljaCBjYXVzZWQg
YSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGZvciB1cyBzaW5jZSB0aGUgaW1hZ2VzIGhhZCB0byBi
ZSByZXNhbXBsZWQvcmVjcmVhdGVkIGV2ZXJ5IHRpbWUgd2UgY2FsbGVkCi0gICAgLy8gQ0dDb250
ZXh0RHJhd0ltYWdlLiBXZSBub3cgdGVsbCBDRyB0byBjYWNoZSB0aGUgZHJhd24gaW1hZ2VzLiBT
ZWUgYWxzbyA8cmRhcjovL3Byb2JsZW0vMTQzNjY3NTU+IC0KLSAgICAvLyBDb3JlR3JhcGhpY3Mg
bmVlZHMgdG8gdW4tZGVwcmVjYXRlIGtDR0ltYWdlQ2FjaGluZ1RlbXBvcmFyeSBzaW5jZSBpdCdz
IHN0aWxsIG5vdCB0aGUgZGVmYXVsdC4KLSNpZiBDT01QSUxFUihDTEFORykKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdk
ZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSNlbmRpZgotICAgIENHSW1hZ2VTZXRDYWNoaW5nRmxh
Z3MoaW1hZ2UuZ2V0KCksIGtDR0ltYWdlQ2FjaGluZ1RlbXBvcmFyeSk7Ci0jaWYgQ09NUElMRVIo
Q0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKLSNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCi0KLSAgICBDRlN0cmluZ1JlZiBpbWFnZVVUSSA9IENHSW1hZ2VTb3VyY2VH
ZXRUeXBlKG1fZGVjb2Rlcik7Ci0gICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIHhibVVUSSA9
IENGU1RSKCJwdWJsaWMueGJpdG1hcC1pbWFnZSIpOwotCi0gICAgaWYgKCFpbWFnZVVUSSkKLSAg
ICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKLQotICAgIGlmICghQ0ZFcXVhbChpbWFnZVVU
SSwgeGJtVVRJKSkKLSAgICAgICAgcmV0dXJuIGltYWdlLmxlYWtSZWYoKTsKLSAgICAKLSAgICAv
LyBJZiBpdCBpcyBhbiB4Ym0gaW1hZ2UsIG1hc2sgb3V0IGFsbCB0aGUgd2hpdGUgYXJlYXMgdG8g
cmVuZGVyIHRoZW0gdHJhbnNwYXJlbnQuCi0gICAgY29uc3QgQ0dGbG9hdCBtYXNraW5nQ29sb3Jz
WzZdID0gezI1NSwgMjU1LCAgMjU1LCAyNTUsIDI1NSwgMjU1fTsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gbWFza2VkSW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoTWFza2luZ0Nv
bG9ycyhpbWFnZS5nZXQoKSwgbWFza2luZ0NvbG9ycykpOwotICAgIGlmICghbWFza2VkSW1hZ2Up
Ci0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7Ci0KLSAgICByZXR1cm4gbWFza2VkSW1h
Z2UubGVha1JlZigpOworICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5jcmVh
dGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOwog
fQogCiBib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKICAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKLSAgICByZXR1cm4gQ0dJbWFnZVNvdXJj
ZUdldFN0YXR1c0F0SW5kZXgobV9kZWNvZGVyLCBpbmRleCkgPT0ga0NHSW1hZ2VTdGF0dXNDb21w
bGV0ZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoaW5kZXgpOwogfQogCiBmbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghaW5pdGlhbGl6ZWQoKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBmbG9hdCBkdXJhdGlvbiA9IDA7Ci0gICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gcHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9w
ZXJ0aWVzQXRJbmRleChtX2RlY29kZXIsIGluZGV4LCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQo
KSkpOwotICAgIGlmIChwcm9wZXJ0aWVzKSB7Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiBnaWZQ
cm9wZXJ0aWVzID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0
aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5R0lGRGljdGlvbmFyeSk7Ci0gICAgICAgIGlmIChn
aWZQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVt
YmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGdpZlByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVy
dHlHSUZVbmNsYW1wZWREZWxheVRpbWUpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVXNlIHRoZSB1
bmNsYW1wZWQgZnJhbWUgZGVsYXkgaWYgaXQgZXhpc3RzLgotICAgICAgICAgICAgICAgIENGTnVt
YmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlvbik7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25h
cnlHZXRWYWx1ZShnaWZQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5R0lGRGVsYXlUaW1lKSkg
ewotICAgICAgICAgICAgICAgIC8vIEZhbGwgYmFjayB0byB0aGUgY2xhbXBlZCBmcmFtZSBkZWxh
eSBpZiB0aGUgdW5jbGFtcGVkIGZyYW1lIGRlbGF5IGRvZXMgbm90IGV4aXN0LgotICAgICAgICAg
ICAgICAgIENGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZkdXJhdGlv
bik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBDRkRpY3Rpb25hcnlSZWYg
cG5nUHJvcGVydGllcyA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJv
cGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBOR0RpY3Rpb25hcnkpOwotICAgICAgICBp
ZiAocG5nUHJvcGVydGllcykgewotICAgICAgICAgICAgaWYgKENGTnVtYmVyUmVmIG51bSA9IChD
Rk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJDb3JlQ0dJ
bWFnZVByb3BlcnR5QVBOR1VuY2xhbXBlZERlbGF5VGltZSkpCi0gICAgICAgICAgICAgICAgQ0ZO
dW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckZsb2F0VHlwZSwgJmR1cmF0aW9uKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKENGTnVtYmVyUmVmIG51bSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25h
cnlHZXRWYWx1ZShwbmdQcm9wZXJ0aWVzLCBXZWJDb3JlQ0dJbWFnZVByb3BlcnR5QVBOR0RlbGF5
VGltZSkpCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckZs
b2F0VHlwZSwgJmR1cmF0aW9uKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIE1hbnkgYW5u
b3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2UgZmxhc2ggYXMg
cXVpY2tseSBhcyBwb3NzaWJsZS4KLSAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdzIGJlaGF2aW9y
IGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhhdCBzcGVjaWZ5
Ci0gICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS83Njg5
MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+Ci0gICAgLy8gZm9yIG1vcmUgaW5m
b3JtYXRpb24uCi0gICAgaWYgKGR1cmF0aW9uIDwgMC4wMTFmKQotICAgICAgICByZXR1cm4gMC4x
ZjsKLSAgICByZXR1cm4gZHVyYXRpb247CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBtX2Rl
Y29kZXItPmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KSA6IDA7CiB9CiAKIGJvb2wgSW1hZ2VT
b3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIW1f
ZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhNRTogd2h5IGRvZXNuJ3QgdGhp
cyByZXR1cm4gdHJ1ZT8KLQotICAgIGlmICghZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgQ0ZTdHJpbmdSZWYgaW1hZ2VUeXBlID0gQ0dJ
bWFnZVNvdXJjZUdldFR5cGUobV9kZWNvZGVyKTsKLQotICAgIC8vIFJldHVybiBmYWxzZSBpZiB0
aGVyZSBpcyBubyBpbWFnZSB0eXBlIG9yIHRoZSBpbWFnZSB0eXBlIGlzIEpQRUcsIGJlY2F1c2UK
LSAgICAvLyBKUEVHIGRvZXMgbm90IHN1cHBvcnQgYWxwaGEgdHJhbnNwYXJlbmN5LgotICAgIGlm
ICghaW1hZ2VUeXBlIHx8IENGRXF1YWwoaW1hZ2VUeXBlLCBDRlNUUigicHVibGljLmpwZWciKSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBDb3VsZCByZXR1cm4gZmFs
c2UgZm9yIG90aGVyIG5vbi10cmFuc3BhcmVudCBpbWFnZSBmb3JtYXRzLgotICAgIC8vIEZJWE1F
OiBDb3VsZCBtYXliZSByZXR1cm4gZmFsc2UgZm9yIGEgR0lGIEZyYW1lIGlmIHdlIGhhdmUgZW5v
dWdoIGluZm8gaW4gdGhlIEdJRiBwcm9wZXJ0aWVzIGRpY3Rpb25hcnkKLSAgICAvLyB0byBkZXRl
cm1pbmUgd2hldGhlciBvciBub3QgYSB0cmFuc3BhcmVudCBjb2xvciB3YXMgZGVmaW5lZC4KLSAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSAmJiBtX2RlY29kZXItPmZy
YW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKIH0KIAogdW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsKSBjb25zdAogewotICAgIEludFNpemUgZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKSk7Ci0gICAgcmV0dXJuIGZyYW1lU2l6ZS53aWR0aCgpICog
ZnJhbWVTaXplLmhlaWdodCgpICogNDsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVj
b2Rlci0+ZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogMDsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNERWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKaW5kZXggYmE0MTU5N2FhMTEwMWRiNjI5MDIz
ZDI3M2IyMDBlNzgxZDMzYWFjOS4uNTljYzJjOWJlOGIzZmZlMTExODZhNjg1ZDJlOGNmNTk0YzFk
MzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNERWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8
fCAhZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KDApKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIG1faW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0
SW5kZXgoMCk7CisgICAgICAgIG1faW1hZ2VTdXJmYWNlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ltYWdlU3VyZmFjZSA9IG1f
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIC8vIDEuIEZvciB0
ZXhJbWFnZTJEIHdpdGggSFRNTFZpZGVvRWxtZW50IGlucHV0LCBhc3N1bWUgbm8gUHJlbXVsdGlw
bHlBbHBoYSBoYWQgYmVlbiBhcHBsaWVkIGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMgMHhGRiBmb3Ig
ZWFjaCBwaXhlbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lvcy9JY29uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0lj
b25JT1MubW0KaW5kZXggMjE1OTE1ZjI4YTE5MjE3MjM5NmQ0NmYwODZkMjI0OWI4MWQ5ZDc2YS4u
ZTE4MzNkMTk4MzBiMTA3NjYzNjY0YjYxMjg0NDU5N2Y4M2ZjMGE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotSWNvbjo6SWNvbihDR0ltYWdlUmVmIGlt
YWdlKQorSWNvbjo6SWNvbihOYXRpdmVJbWFnZVB0ciBpbWFnZSkKICAgICA6IG1fY2dJbWFnZShp
bWFnZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbQppbmRleCBmZjA3MTMxYTYxZmNlZDA0NTg2YjM3MmQ5YmEyMDc5YTk4NzNjMzhi
Li5mYTAxMWFhODgxNjMwMzAwMDk0NDk4ZWJjMGZmY2E5ZmI5YzMwMzRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC05NSw3ICs5
NSw3IEBAIENGRGF0YVJlZiBCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkKIAog
ICAgIFZlY3RvcjxDR0ltYWdlUmVmPiBpbWFnZXM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bUZyYW1lczsgKytpICkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFt
ZUF0SW5kZXgoaSk7CisgICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdElu
ZGV4KGkpLmdldCgpOwogICAgICAgICBpZiAoY2dJbWFnZSkKICAgICAgICAgICAgIGltYWdlcy5h
cHBlbmQoY2dJbWFnZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDgzNWVjZjNmNGZlZWViOGEwZGZhOGQz
Njk3MzEyOGYzYjgwN2I5MjYuLjQ3MDczYzBlZDY5MGUwNDRmZmIzYTk0ZTU4NmYyNjAyNzlkMWM0
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1l
TWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKIHsK
ICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJ
bmRleChpKTsKKyAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkp
LmdldCgpOwogICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAg
ICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAg
bV9jdXJyZW50RnJhbWUgPSBpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDI5YTIwMjNkYjYzYTkxNDM0YzM5
NDhlYWE1NTIzYmI2MWZlODEwNzUuLjk3ZWQwOTc5MzVjNTFmYzIwYTg0NWM5NThlMTU2OThkMjAw
MGRiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VDYWlyb1dpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3Qg
RmxvYXQKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gc3VyZmFjZSA9IGZyYW1lQXRJbmRleChpKTsKKyAgICAgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOwogICAgICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggYmJhZTkxZmE4ZTNjMDY2NDQ3YzQ2NGQ2ZTMxMjAw
ZGUyNDhjZTgzZi4uOTFjOTJlOTEyY2MyMTg5MmY2NTllNjdhOTU5NTcxZmJkZDAwMjdiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC05MSw3ICs5
MSw3IEBAIFJldGFpblB0cjxOU0ltYWdlPiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2Uq
IGltYWdlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpCiAgICAgaWYgKGlzPEJpdG1hcEltYWdlPigq
aW1hZ2UpKSB7CiAgICAgICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247CiAgICAgICAg
IEJpdG1hcEltYWdlJiBiaXRtYXBJbWFnZSA9IGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2Up
OwotICAgICAgICBJbnRTaXplIHNpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBiaXRtYXBJbWFn
ZS5zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uKGRlc2NyaXB0aW9uKTsKKyAgICAgICAgSW50U2l6
ZSBzaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gYml0bWFwSW1hZ2Uuc2l6ZVJlc3BlY3RpbmdP
cmllbnRhdGlvbigpOwogCiAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQogICAgICAgICAgICAgb3JpZW50
YXRpb24gPSBiaXRtYXBJbWFnZS5vcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273995</attachid>
            <date>2016-03-14 11:49:02 -0700</date>
            <delta_ts>2016-04-15 22:19:46 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>image-3.patch</filename>
            <type>text/plain</type>
            <size>39004</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNmRjNThiMi4uZTg4NzkyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMTgsNiArMjIxOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JU09WVFRDdWUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VP
cmllbnRhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIzZWE4NzguLmE2NzJh
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxNi0wMy0xNCAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIFJlbmFtZSBGcmFtZURh
dGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBzZXBhcmF0ZSBmaWxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0NDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcGxhbiBpcyB0
byBoYXZlIGNhY2hpbmcgdGhlIEltYWdlRnJhbWVEYXRhIGJlIGRvbmUgYnkgdGhlIEltYWdlU291
cmNlLgorICAgICAgICBTbyBtb3ZlIHRoZSBJbWFnZUZyYW1lRGF0YSB0byBhIHNlcGFyYXRlIGZp
bGUgc28gaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkKKyAgICAgICAgSW1hZ2VTb3VyY2UgYW5kIEJp
dG1hcEltYWdlLiBBbHNvIGRvIHRoZSBmb2xsb3dpbmcgY2xlYW51cDoKKyAgICAgICAgMS4gQ2Fs
Y3VsYXRlIHRoZSBpbWFnZSBzb2xpZENvbG9yKCkgaW4gdGhlIEltYWdlRnJhbWVEYXRhIHdoZW4g
aXQgaXMgbmVlZGVkLgorICAgICAgICAyLiBIYXZlIGEgc2luZ2xlIGZ1bmN0aW9uIEJpdG1hcElt
YWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKS4KKyAgICAgICAgMy4gR2V0IHJpZCBvZiBCaXRtYXBJ
bWFnZTo6bV9oYXNVbmlmb3JtRnJhbWVTaXplIHNpbmNlIGl0IGlzIG5vdCB1c2VkLgorICAgICAg
ICA0LiBSZXBsYWNlIEJpdG1hcEltYWdlIG1faXNTb2xpZENvbG9yIGFuZCBtX2NoZWNrZWRGb3JT
b2xpZENvbG9yIGJ5IGEgdHJpc3RhdGUgCisgICAgICAgICAgIG1lbWJlciBuYW1lZCBtX3NvbGlk
Q29sb3JWYWx1ZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBs
YXRmb3JtV2luQ2Fpcm8uY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6dXBkYXRlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6c2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmVu
c3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1l
SW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUlzQ29t
cGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0Zv
clNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzU29saWRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzb2xpZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OnNvbGlkQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6On5J
bWFnZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3RhdHVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0Zv
clNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVh
cik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZGV0ZXJtaW5lTWluaW11bVN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6Z2V0Q0dJbWFnZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdl
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOiBEZWxl
dGVkLgorCiAyMDE2LTAzLTEzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBs
ZSxjb20+CiAKICAgICAgICAgQ3JlYXRlIGEgQ0cgSW1hZ2VEZWNvZGVyIGNsYXNzIGluc3RlYWQg
b2YgZGVmaW5pbmcgaXQgYXMgQ0dJbWFnZVNvdXJjZVJlZiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UKaW5kZXggZWNlMmM1My4uYWQ3YzdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAg
LTEyMyw2ICsxMjMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCiAgICAgcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcAogCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1EaXNwbGF5LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlNmM4N2IyLi45NDk4NDk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtOTQsNiArOTQsNyBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCmluZGV4IDM4YTAyOGMuLjI0OGM4
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQpAQCAtMzksNiArMzksNyBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dM
Q29udGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiNjI5MzEu
LmQxM2U5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIyOTMsNiArMjI5Myw4IEBACiAJCTU1MEEwQkNBMDg1RjYwMzkwMDcz
NTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU1OUJC
ODc5MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5QkI4NzcxQzk2NDY1ODAwMjQxM0NEIC8q
IEltYWdlRGVjb2Rlci5jcHAgKi87IH07CiAJCTU1OUJCODdBMUM5NjQ2NTgwMDI0MTNDRCAvKiBJ
bWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1OUJCODc4MUM5NjQ2NTgwMDI0MTNDRCAvKiBJbWFnZURlY29kZXIuaCAqLzsgfTsKKwkJ
NTU5QkI4N0QxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OUJCODdCMUM5NkIyQzgwMDI0
MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87IH07CisJCTU1OUJCODdFMUM5NkIyQzkwMDI0
MTNDRCAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTU5QkI4N0MxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcy
QTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkg
LyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJNTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8q
IFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAg
Ki87IH07CiAJCTU4MDM3MTYxMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBB
MDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovOyB9OwpAQCAtOTg3OSw2ICs5ODgxLDggQEAKIAkJ
NTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
NTU5QkI4NzcxQzk2NDY1ODAwMjQxM0NEIC8qIEltYWdlRGVjb2Rlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURlY29kZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NTlCQjg3ODFDOTY0NjU4MDAyNDEzQ0QgLyogSW1hZ2VEZWNvZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTlCQjg3QjFDOTZCMkM4MDAyNDEzQ0QgLyogSW1h
Z2VGcmFtZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1h
Z2VGcmFtZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTlCQjg3QzFD
OTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW1hZ2VGcmFtZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTVENDA4RjcxQTdDNjMxODAwQzc4NDUwIC8qIFNWR0ltYWdlQ2xpZW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdJbWFnZUNsaWVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTcyQTdGMjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENs
aWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVsYXRlZENsaWNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkE3RjIyMUM2RTVBNjYwMDlDNjE0OSAv
KiBTaW11bGF0ZWRDbGljay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaW11bGF0ZWRDbGljay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjAw
MSw2ICsyMjAwNSw4IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVm
ZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIu
aCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmgg
Ki8sCisJCQkJNTU5QkI4N0IxQzk2QjJDODAwMjQxM0NEIC8qIEltYWdlRnJhbWVEYXRhLmNwcCAq
LywKKwkJCQk1NTlCQjg3QzFDOTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuaCAqLywK
IAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovLAogCQkJ
CUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCAqLywKIAkJ
CQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovLApAQCAt
MjU0ODEsNiArMjU0ODcsNyBAQAogCQkJCTk3QkM2QTI0MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZUF1dGhvcml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzM3MUEyMTY3QzExRDQwMEVE
Qjc1MiAvKiBEYXRhYmFzZUJhc2ljVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI1
MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1NTlCQjg3RTFDOTZCMkM5MDAyNDEzQ0QgLyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3QkM2QTI4MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURl
dGFpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMDlEQjQ5MTY5RTJENkUwMDYyMjU1NyAvKiBE
YXRhYmFzZUVycm9yLmggaW4gSGVhZGVycyAqLywKQEAgLTI5NjA2LDYgKzI5NjEzLDcgQEAKIAkJ
CQk4NTNCRjREQzBBQkI2QjU1MDA4NjQ3QkIgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTg1NTI2QzM4MEFCMEExN0UwMDAzMDJFQSAvKiBET01Ob2RlSXRlcmF0b3IubW0gaW4gU291
cmNlcyAqLywKIAkJCQk4NUFDQUE4RTBBOUI3NTlDMDA2NzFFOTAgLyogRE9NTm9kZUxpc3QubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1NTlCQjg3RDFDOTZCMkM4MDAyNDEzQ0QgLyogSW1hZ2VGcmFt
ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODU2QzhBRTUwQTkxMjY0OTAwNUM2ODdCIC8q
IERPTU9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QzdGNUQxMEFBRkI4RDkwMDQwMTRE
RCAvKiBET01PdmVyZmxvd0V2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyODRCRDUxMDQ0
QTAxRTAwRUFFQjUyIC8qIERPTVBhZ2VUcmFuc2l0aW9uRXZlbnQubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApp
bmRleCA5NjQwZWUyLi5jYjViMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC02MywxMyArNjMsMTAgQEAgQml0bWFwSW1hZ2U6
OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogI2Vsc2UKICAgICAsIG1fYWxs
b3dTdWJzYW1wbGluZyhmYWxzZSkKICNlbmRpZgotICAgICwgbV9pc1NvbGlkQ29sb3IoZmFsc2Up
Ci0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQogICAgICwgbV9hbmltYXRpb25G
aW5pc2hlZChmYWxzZSkKICAgICAsIG1fYWxsRGF0YVJlY2VpdmVkKGZhbHNlKQogICAgICwgbV9o
YXZlU2l6ZShmYWxzZSkKICAgICAsIG1fc2l6ZUF2YWlsYWJsZShmYWxzZSkKLSAgICAsIG1faGFz
VW5pZm9ybUZyYW1lU2l6ZSh0cnVlKQogICAgICwgbV9oYXZlRnJhbWVDb3VudChmYWxzZSkKICAg
ICAsIG1fYW5pbWF0aW9uRmluaXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKQEAgLTEyMiw3
ICsxMTksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsKQogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBk
YXRhKSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEu
CiAgICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7
Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCisgICAgICAgIGlmIChtX2Zy
YW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSkpCiAgICAgICAg
ICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOwogICAgIH0KIApAQCAtMTU1LDgg
KzE1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5
KGJvb2wgZGVzdHJveUFsbCkKIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5k
Tm90aWZ5KHVuc2lnbmVkIGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU291cmNlIGNsZWFyZWRT
b3VyY2UpCiB7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICBtX2NoZWNrZWRGb3JT
b2xpZENvbG9yID0gZmFsc2U7CisgICAgbV9zb2xpZENvbG9yVmFsdWUgPSBUcmlTdGF0ZTo6VW5j
aGVja2VkOwogICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKIAogICAgIEFTU0VSVChtX2Rl
Y29kZWRTaXplID49IGZyYW1lQnl0ZXNDbGVhcmVkKTsKQEAgLTE4MCwxMSArMTc2LDkgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVz
KQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgeworICAgIGlmIChmcmFtZUNhY2hpbmcgPT0g
SW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewogICAgICAgICBtX2Zy
YW1lc1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKICAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2Ft
cGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgICAgIGlmIChudW1GcmFtZXMgPT0g
MSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgICAgIGNoZWNrRm9yU29saWRD
b2xvcigpOwogICAgIH0KIAogICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0aW9uID0gbV9z
b3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKQEAgLTE5NywxMCArMTkxLDYgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYSA9IG1f
c291cmNlLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKICAgICBtX2ZyYW1lc1tpbmRleF0u
bV9mcmFtZUJ5dGVzID0gbV9zb3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBs
aW5nTGV2ZWwpOwogCi0gICAgY29uc3QgSW50U2l6ZSBmcmFtZVNpemUoaW5kZXggPyBtX3NvdXJj
ZS5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG1fc2l6ZSk7Ci0g
ICAgaWYgKCFzdWJzYW1wbGluZ0xldmVsICYmIGZyYW1lU2l6ZSAhPSBtX3NpemUpCi0gICAgICAg
IG1faGFzVW5pZm9ybUZyYW1lU2l6ZSA9IGZhbHNlOwotCiAgICAgaWYgKG1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlKSB7CiAgICAgICAgIGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2Zy
YW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0
YUJ5dGVzOwpAQCAtMjk1LDcgKzI4NSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2Vk
KGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBjbGVhcmVkLW9uLWEtcHJldmlvdXMt
cGFzcykgZnJhbWVzIQogICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9mcmFtZXNbaV0u
bV9mcmFtZUJ5dGVzOwogICAgICAgICBpZiAobV9mcmFtZXNbaV0ubV9oYXZlTWV0YWRhdGEgJiYg
IW1fZnJhbWVzW2ldLm1faXNDb21wbGV0ZSkKLSAgICAgICAgICAgIGZyYW1lQnl0ZXNDbGVhcmVk
ICs9IChtX2ZyYW1lc1tpXS5jbGVhcih0cnVlKSA/IGZyYW1lQnl0ZXMgOiAwKTsKKyAgICAgICAg
ICAgIGZyYW1lQnl0ZXNDbGVhcmVkICs9IChtX2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lQ2Fj
aGluZzo6Q2FjaGVOb25lKSA/IGZyYW1lQnl0ZXMgOiAwKTsKICAgICB9CiAgICAgZGVzdHJveU1l
dGFkYXRhQW5kTm90aWZ5KGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU291cmNlOjpObyk7CiAj
ZWxzZQpAQCAtMzAzLDcgKzI5Myw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1f
ZnJhbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1l
cy5zaXplKCkgLSAxXS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1l
cy5zaXplKCkgLSAxXS5jbGVhcih0cnVlKSkgeworICAgICAgICBpZiAobV9mcmFtZXNbbV9mcmFt
ZXMuc2l6ZSgpIC0gMV0uY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSkpIHsKICAg
ICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gYnl0ZXM7CiAgICAgICAgICAgICBkZWx0YUJ5dGVzICs9
IG1fZGVjb2RlZFByb3BlcnRpZXNTaXplOwogICAgICAgICAgICAgbV9kZWNvZGVkUHJvcGVydGll
c1NpemUgPSAwOwpAQCAtMzM0LDcgKzMyNCw2IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFu
Z2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogI2VuZGlmCiAKICAgICBtX2hhdmVGcmFtZUNvdW50
ID0gZmFsc2U7Ci0gICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gdHJ1ZTsKICAgICByZXR1cm4g
aXNTaXplQXZhaWxhYmxlKCk7CiB9CiAKQEAgLTM3Myw4ICszNjIsOCBAQCBib29sIEJpdG1hcElt
YWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcg
ZnJhbWVDYWNoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFu
ZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgfHwgKGZyYW1lQ2Fj
aGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFk
YXRhKSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2Fj
aGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKKyAgICAgICAg
fHwgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YSAmJiAh
bV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRl
eCwgMCwgZnJhbWVDYWNoaW5nKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzkyLDcgKzM4MSw3
IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpCiAgICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6
ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2Zy
YW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CiAgICAgICAgIC8vIElmIHRoZSBpbWFn
ZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUsIHJlLWRlY29kZSBh
IGxhcmdlciB2ZXJzaW9uLgogICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1tX2ZyYW1lc1tpbmRl
eF0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xlYXIodHJ1ZSk7Cisg
ICAgICAgIG1fZnJhbWVzW2luZGV4XS5jbGVhcihJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVOb25l
KTsKICAgICAgICAgaW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogICAgICAgICBtX2RlY29kZWRT
aXplICs9IHNpemVDaGFuZ2U7CiAgICAgICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCkBAIC00MDEs
MTQgKzM5MCwxNCBAQCBQYXNzTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aQogCiAgICAgLy8gSWYgd2UgaGF2
ZW4ndCBmZXRjaGVkIGEgZnJhbWUgeWV0LCBkbyBzby4KICAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFt
ZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICAg
ICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmc6
OkNhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CiAKICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1f
aW1hZ2U7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6
ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVN
ZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgSW1hZ2VG
cmFtZUNhY2hpbmc6OkNhY2hlTWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsKQEAgLTQxNiw3ICs0MDUsNyBA
QCBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkK
IAogZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5
KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5n
OjpDYWNoZU1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gbV9mcmFt
ZXNbaW5kZXhdLm1fZHVyYXRpb247CkBAIC00MjksNyArNDE4LDcgQEAgUGFzc05hdGl2ZUltYWdl
UHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiAKIGJvb2wgQml0
bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAo
IWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAo
IWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFk
YXRhKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1f
aGF2ZU1ldGFkYXRhKQpAQCAtNDQ1LDcgKzQzNCw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmN1cnJl
bnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiAKIEltYWdlT3JpZW50YXRpb24gQml0bWFwSW1hZ2U6
OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3Vy
ZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3Vy
ZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nOjpDYWNoZU1ldGFkYXRhKSkK
ICAgICAgICAgcmV0dXJuIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOwogCiAgICAgaWYgKG1fZnJh
bWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkKQEAgLTY3MiwxOSArNjYxLDQ5IEBAIGJvb2wgQml0
bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFuaW1hdGlvbihBbmltYXRpb25BZHZhbmNlbWVudCBh
ZHZhbmNlbWVudCkKIAogICAgIHJldHVybiBhZHZhbmNlZEFuaW1hdGlvbjsKIH0KKyAgICAKK3Zv
aWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCit7CisgICAgbV9zb2xpZENvbG9y
VmFsdWUgPSBUcmlTdGF0ZTo6Tm87CisgICAgCisgICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoIWhhdmVGcmFtZUltYWdlQXRJbmRleCgwKSkg
eworICAgICAgICBJbnRTaXplIHNpemUgPSBtX3NvdXJjZS5mcmFtZVNpemVBdEluZGV4KDAsIDAp
OworICAgICAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKCFlbnN1cmVGcmFtZUlz
Q2FjaGVkKDApKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoIW1f
ZnJhbWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChPcHRpb25hbDxD
b2xvcj4gY29sb3IgPSBtX2ZyYW1lc1swXS5zb2xpZENvbG9yKCkpIHsKKyAgICAgICAgbV9zb2xp
ZENvbG9yID0gY29sb3IudmFsdWUoKTsKKyAgICAgICAgbV9zb2xpZENvbG9yVmFsdWUgPSBUcmlT
dGF0ZTo6WWVzOworICAgIH0KK30KIAotYm9vbCBCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xp
ZENvbG9yKCkKK2Jvb2wgQml0bWFwSW1hZ2U6OmlzU29saWRDb2xvcigpCiB7Ci0gICAgaWYgKCFt
X2NoZWNrZWRGb3JTb2xpZENvbG9yICYmIGZyYW1lQ291bnQoKSA+IDApIHsKKyAgICBpZiAobV9z
b2xpZENvbG9yVmFsdWUgPT0gVHJpU3RhdGU6OlVuY2hlY2tlZCAmJiBmcmFtZUNvdW50KCkgPiAw
KSB7CiAgICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwotICAgICAgICBBU1NFUlQobV9jaGVj
a2VkRm9yU29saWRDb2xvcik7CisgICAgICAgIEFTU0VSVChtX3NvbGlkQ29sb3JWYWx1ZSAhPSBU
cmlTdGF0ZTo6VW5jaGVja2VkKTsKICAgICB9Ci0gICAgcmV0dXJuIG1faXNTb2xpZENvbG9yICYm
ICFtX2N1cnJlbnRGcmFtZTsKKyAgICByZXR1cm4gbV9zb2xpZENvbG9yVmFsdWUgPT0gVHJpU3Rh
dGU6OlllczsKIH0KLQotQ29sb3IgQml0bWFwSW1hZ2U6OnNvbGlkQ29sb3IoKSBjb25zdAorICAg
IAorYm9vbCBCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKCkKK3sKKyAgICByZXR1
cm4gaXNTb2xpZENvbG9yKCkgJiYgIW1fY3VycmVudEZyYW1lOworfQorICAgIAorQ29sb3IgQml0
bWFwSW1hZ2U6OnNvbGlkQ29sb3IoKQogewotICAgIHJldHVybiBtX3NvbGlkQ29sb3I7CisgICAg
cmV0dXJuIGlzU29saWRDb2xvcigpID8gbV9zb2xpZENvbG9yIDogQ29sb3IoKTsKIH0KICAgICAK
IGJvb2wgQml0bWFwSW1hZ2U6OmNhbkFuaW1hdGUoKQpAQCAtNzA2LDggKzcyNSw4IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgCiAgICAgaWYgKGFs
bG93U3Vic2FtcGxpbmcoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbGxvdy1zdWJzYW1w
bGluZyIsIGFsbG93U3Vic2FtcGxpbmcoKSk7Ci0gICAgaWYgKG1faXNTb2xpZENvbG9yKQotICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInNvbGlkLWNvbG9yIiwgbV9pc1NvbGlkQ29sb3IpOworICAg
IGlmIChtX3NvbGlkQ29sb3JWYWx1ZSA9PSBUcmlTdGF0ZTo6WWVzKQorICAgICAgICB0cy5kdW1w
UHJvcGVydHkoInNvbGlkLWNvbG9yIiwgbV9zb2xpZENvbG9yKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNzY5YWYxYS4u
ZDk5N2VkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUg
IkNvbG9yLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9y
aWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCkBAIC01MCw0MyArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRpbWVy
OwogCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS8vIEZyYW1lRGF0YSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0KLXN0cnVjdCBGcmFtZURhdGEgewotcHVibGljOgotICAgIEZyYW1l
RGF0YSgpCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsgCi0gICAgICAg
IGNsZWFyKHRydWUpOwotICAgIH0KLQotICAgIGJvb2wgY2xlYXIoYm9vbCBjbGVhck1ldGFkYXRh
KTsKLSAgICBPcHRpb25hbDxDb2xvcj4gc29saWRDb2xvcigpIGNvbnN0OwotCi0gICAgTmF0aXZl
SW1hZ2VQdHIgbV9pbWFnZTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBE
ZWZhdWx0SW1hZ2VPcmllbnRhdGlvbiB9OwotICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1w
bGluZ0xldmVsIHsgMCB9OwotICAgIGZsb2F0IG1fZHVyYXRpb24geyAwIH07Ci0gICAgdW5pb24g
ewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgYm9vbCBtX2hhdmVNZXRhZGF0YSA6IDE7
Ci0gICAgICAgICAgICBib29sIG1faXNDb21wbGV0ZSA6IDE7Ci0gICAgICAgICAgICBib29sIG1f
aGFzQWxwaGEgOiAxOwotICAgICAgICB9OwotICAgICAgICB1aW50OF90IG1fZmxhZ3Nbc2l6ZW9m
KGJvb2wpXSB7IDAgfTsKLSAgICB9OwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlcyB7IDAgfTsK
LX07Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVibGlj
IEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNs
YXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMjEwLDExICsxNzQsMTAgQEAgcHJvdGVj
dGVkOgogICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90
KTsKIAogICAgIC8vIERlY29kZXMgYW5kIGNhY2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBl
eGNlcHQgaW50ZXJuYWxseS4KLSAgICBlbnVtIEltYWdlRnJhbWVDYWNoaW5nIHsgQ2FjaGVNZXRh
ZGF0YU9ubHksIENhY2hlTWV0YWRhdGFBbmRGcmFtZSB9OwotICAgIHZvaWQgY2FjaGVGcmFtZShz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVN
ZXRhZGF0YUFuZEZyYW1lKTsKKyAgICB2b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IEltYWdlRnJhbWVDYWNoaW5nOjpDYWNo
ZU1ldGFkYXRhQW5kRnJhbWUpOwogCiAgICAgLy8gQ2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgbV9m
cmFtZXNbaW5kZXhdIGZvciBpbmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJldHVybnMgZmFsc2Ugb24g
aW5kZXggb3V0IG9mIGJvdW5kcy4KLSAgICBib29sIGVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90
IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CisgICAg
Ym9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcg
PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKIAogICAgIC8vIENh
bGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0cm95QWxsfCBpcyB0cnVl
LCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVmZmVyIGNhY2hlIGFuZCB0
ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMjY1LDggKzIyOCw5IEBAIHByb3Rl
Y3RlZDoKICAgICAvLyBjaGFuZ2VkLgogICAgIHZvaWQgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAK
KyAgICBib29sIGlzU29saWRDb2xvcigpOwogICAgIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9y
KCkgb3ZlcnJpZGU7Ci0gICAgQ29sb3Igc29saWRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAg
IENvbG9yIHNvbGlkQ29sb3IoKSBvdmVycmlkZTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICBib29sIG5vdFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKQEAgLTI4NSw3ICsyNDksNyBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgU3Vic2FtcGxpbmdMZXZlbCBtX21heGltdW1TdWJzYW1wbGluZ0xl
dmVsIHsgMCB9OwogCiAgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lOyAvLyBUaGUgaW5kZXggb2Yg
dGhlIGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgotICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+
IG1fZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0
aW9uLiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgorICAg
IFZlY3RvcjxJbWFnZUZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBj
YWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBw
aW4gdGhlbSBpbiB0aGUgY2FjaGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJh
bWVUaW1lcjsKICAgICBpbnQgbV9yZXBldGl0aW9uQ291bnQ7IC8vIEhvdyBtYW55IHRvdGFsIGFu
aW1hdGlvbiBsb29wcyB3ZSBzaG91bGQgZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBp
ZiB0aGlzIGltYWdlIHR5cGUgaXMgaW5jYXBhYmxlIG9mIGFuaW1hdGlvbi4KQEAgLTMxMiwxNiAr
Mjc2LDE1IEBAIHByaXZhdGU6CiAgICAgdWludDE2X3QgbV9wcm9ncmVzc2l2ZUxvYWRDaHVua0Nv
dW50OwogI2VuZGlmCiAKKyAgICBlbnVtIGNsYXNzIFRyaVN0YXRlIHsgVW5jaGVja2VkLCBObywg
WWVzIH07CisgICAgVHJpU3RhdGUgbV9zb2xpZENvbG9yVmFsdWUgeyBUcmlTdGF0ZTo6VW5jaGVj
a2VkIH07CisgICAgCiAgICAgYm9vbCBtX2FsbG93U3Vic2FtcGxpbmcgOiAxOyAvLyBXaGV0aGVy
IHdlIHNob3VsZCBhdHRlbXB0IHN1YnNhbXBsaW5nIGlmIHRoaXMgaW1hZ2UgaXMgdmVyeSBsYXJn
ZS4KLSAgICBib29sIG1faXNTb2xpZENvbG9yIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UgYXJl
IGEgMXgxIHNvbGlkIGltYWdlLgotICAgIGJvb2wgbV9jaGVja2VkRm9yU29saWRDb2xvciA6IDE7
IC8vIFdoZXRoZXIgd2UndmUgY2hlY2tlZCB0aGUgZnJhbWUgZm9yIHNvbGlkIGNvbG9yLgotCiAg
ICAgYm9vbCBtX2FuaW1hdGlvbkZpbmlzaGVkIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UndmUg
Y29tcGxldGVkIHRoZSBlbnRpcmUgYW5pbWF0aW9uLgogCiAgICAgYm9vbCBtX2FsbERhdGFSZWNl
aXZlZCA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlJ3ZlIHJlY2VpdmVkIGFsbCBvdXIgZGF0YS4K
ICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlU2l6ZSA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IG91ciB8
bV9zaXplfCBtZW1iZXIgdmFyaWFibGUgaGFzIHRoZSBmaW5hbCBvdmVyYWxsIGltYWdlIHNpemUg
eWV0LgogICAgIGJvb2wgbV9zaXplQXZhaWxhYmxlIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2Ug
Y2FuIG9idGFpbiB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgaW1hZ2UgZnJhbWUgeWV0IGZyb20gSW1h
Z2VJTy4KLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNVbmlmb3JtRnJhbWVTaXplIDogMTsKICAgICBt
dXRhYmxlIGJvb2wgbV9oYXZlRnJhbWVDb3VudCA6IDE7CiAgICAgYm9vbCBtX2FuaW1hdGlvbkZp
bmlzaGVkV2hlbkNhdGNoaW5nVXAgOiAxOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAppbmRleCA0MWZlZjJhLi5iMTJjMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTE5NCw3ICsxOTQsNyBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdp
dGhTb2xpZENvbG9yKCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIENvbG9yIHNvbGlk
Q29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CisgICAgdmlydHVhbCBDb2xvciBzb2xp
ZENvbG9yKCkgeyByZXR1cm4gQ29sb3IoKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKaW5kZXggNjkxZTA0ZC4uM2Fm
NjgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RnJhbWVEYXRhLmNwcApAQCAtMSw5ICsxLDg0IEBACi0vLwotLy8gIEltYWdlRnJhbWVEYXRhLmNw
cAotLy8gIFdlYkNvcmUKLS8vCi0vLyAgQ3JlYXRlZCBieSBTYWlkIEFib3UtSGFsbGF3YSBvbiAz
LzE0LzE2LgotLy8KLS8vCi0KLSNpbmNsdWRlICJJbWFnZUZyYW1lRGF0YS5ocHAiCisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCisKKyNpbmNsdWRlICJJbWFnZURlY29kZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorSW1hZ2VGcmFtZURhdGE6OkltYWdlRnJh
bWVEYXRhKCkKK3sKK30KKworSW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKEltYWdlRGVj
b2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwsIGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKKyAgICA6IG1faW1hZ2UoaW1hZ2Up
CisgICAgLCBtX3N1YnNhbXBsaW5nTGV2ZWwoc3Vic2FtcGxpbmdMZXZlbCkKKyAgICAsIG1faGF2
ZU1ldGFkYXRhKHRydWUpCit7CisjaWYgVVNFKENHKQorICAgIG1fb3JpZW50YXRpb24gPSBkZWNv
ZGVyLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CisgICAgbV9oYXNBbHBoYSA9IGRlY29kZXIu
ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAgIG1fZnJhbWVCeXRlcyA9IGRlY29kZXIu
ZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIAorICAgIG1f
YWxsb3dTdWJzYW1wbGluZyA9IGRlY29kZXIuYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4
KGluZGV4KTsKKyAgICAKKyAgICBtX2lzQ29tcGxldGUgPSBkZWNvZGVyLmZyYW1lSXNDb21wbGV0
ZUF0SW5kZXgoaW5kZXgpOworICAgIGlmIChkZWNvZGVyLnJlcGV0aXRpb25Db3VudCgpICE9IGNB
bmltYXRpb25Ob25lKQorICAgICAgICBtX2R1cmF0aW9uID0gZGVjb2Rlci5mcmFtZUR1cmF0aW9u
QXRJbmRleChpbmRleCk7CisjZWxzZQorICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVu
dGF0aW9uKCk7CisgICAgbV9oYXNBbHBoYSA9IGRlY29kZXIuZnJhbWVIYXNBbHBoYUF0SW5kZXgo
aW5kZXgpOworICAgIG1fZnJhbWVCeXRlcyA9IGRlY29kZXIuZnJhbWVCeXRlc0F0SW5kZXgoaW5k
ZXgpOworICAgIAorICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IGRlY29kZXIuZnJhbWVCdWZmZXJB
dEluZGV4KGluZGV4KTsKKyAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c3RhdHVzKCkgIT0gSW1h
Z2VGcmFtZTo6RnJhbWVFbXB0eSkgeworICAgICAgICBtX2lzQ29tcGxldGUgPSBidWZmZXItPnN0
YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgICAgIGlmIChkZWNvZGVy
LnJlcGV0aXRpb25Db3VudCgpICE9IGNBbmltYXRpb25Ob25lKSB7CisgICAgICAgICAgICAvLyBN
YW55IGFubm95aW5nIGFkcyBzcGVjaWZ5IGEgMCBkdXJhdGlvbiB0byBtYWtlIGFuIGltYWdlIGZs
YXNoIGFzIHF1aWNrbHkgYXMgcG9zc2libGUuCisgICAgICAgICAgICAvLyBXZSBmb2xsb3cgRmly
ZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFt
ZXMgdGhhdCBzcGVjaWZ5CisgICAgICAgICAgICAvLyBhIGR1cmF0aW9uIG9mIDw9IDEwIG1zLiBT
ZWUgPHJkYXI6Ly9wcm9ibGVtLzc2ODkzMDA+IGFuZCA8aHR0cDovL3dlYmtpdC5vcmcvYi8zNjA4
Mj4KKyAgICAgICAgICAgIC8vIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgbV9k
dXJhdGlvbiA9IHN0ZDo6bWF4KGJ1ZmZlci0+ZHVyYXRpb24oKSAvIDEwMDAuMGYsIDAuMTAwZik7
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKworSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZy
YW1lRGF0YSgpCit7CisgICAgY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSk7Cit9
CisKK0ltYWdlRnJhbWVTdGF0dXMgSW1hZ2VGcmFtZURhdGE6OnN0YXR1cygpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZVN0YXR1czo6RGVjb2Rl
Tm9uZTsKKyAgICAKKyAgICByZXR1cm4gbV9pc0NvbXBsZXRlID8gSW1hZ2VGcmFtZVN0YXR1czo6
RGVjb2RlQ29tcGxldGUgOiBJbWFnZUZyYW1lU3RhdHVzOjpEZWNvZGVQYXJ0aWFsOworfQorICAg
IAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVE
YXRhLmgKaW5kZXggMzVlY2NjYi4uMTRhZmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCkBAIC0xLDE0ICsxLDkyIEBACi0vLwot
Ly8gIEltYWdlRnJhbWVEYXRhLmhwcAotLy8gIFdlYkNvcmUKLS8vCi0vLyAgQ3JlYXRlZCBieSBT
YWlkIEFib3UtSGFsbGF3YSBvbiAzLzE0LzE2LgotLy8KLS8vCisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCiAKLSNpZm5kZWYgSW1hZ2VGcmFtZURhdGFfaHBwCi0j
ZGVmaW5lIEltYWdlRnJhbWVEYXRhX2hwcAorI2lmbmRlZiBJbWFnZUZyYW1lRGF0YV9oCisjZGVm
aW5lIEltYWdlRnJhbWVEYXRhX2gKIAotI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSAiQ29s
b3IuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5o
IgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCiAKLSNlbmRpZiAvKiBJbWFnZUZyYW1lRGF0
YV9ocHAgKi8KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKy8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAg
aXMgbm8gc3Vic2FtcGxpbmcsIDEgaXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMu
Cit0eXBlZGVmIHNob3J0IFN1YnNhbXBsaW5nTGV2ZWw7Cit0eXBlZGVmIHNpemVfdCBJbWFnZUZy
YW1lSW5kZXg7CisKK3N0YXRpYyBjb25zdCBJbWFnZUZyYW1lSW5kZXggTWF4SW1hZ2VGcmFtZUlu
ZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czxJbWFnZUZyYW1lSW5kZXg+OjptYXgoKTsKKworZW51
bSBjbGFzcyBJbWFnZUZyYW1lQ2FjaGluZyB7CisgICAgQ2FjaGVOb25lLAorICAgIENhY2hlTWV0
YWRhdGEsCisgICAgQ2FjaGVGcmFtZSwKKyAgICBDYWNoZU1ldGFkYXRhQW5kRnJhbWUKK307CisK
K2VudW0gY2xhc3MgSW1hZ2VGcmFtZVN0YXR1cyB7CisgICAgRGVjb2RlTm9uZSwKKyAgICBEZWNv
ZGVQYXJ0aWFsLAorICAgIERlY29kZUNvbXBsZXRlCit9OworCitjbGFzcyBJbWFnZURlY29kZXI7
CisKK3N0cnVjdCBJbWFnZUZyYW1lRGF0YSB7CitwdWJsaWM6CisgICAgSW1hZ2VGcmFtZURhdGEo
KTsKKyAgICBJbWFnZUZyYW1lRGF0YShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOworICAgIEltYWdl
RnJhbWVEYXRhKEltYWdlRGVjb2RlciYsIEltYWdlRnJhbWVJbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCwgY29uc3QgTmF0aXZlSW1hZ2VQdHImID0gbnVsbHB0cik7CisgICAgfkltYWdlRnJhbWVEYXRh
KCk7CisgICAgCisgICAgSW1hZ2VGcmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdDsKKyAgICAKKyAg
ICBib29sIGNsZWFyKEltYWdlRnJhbWVDYWNoaW5nKTsKKyAgICBPcHRpb25hbDxDb2xvcj4gc29s
aWRDb2xvcigpIGNvbnN0OworICAgIAorICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2UgeyBudWxs
cHRyIH07CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdl
T3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7
IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9OworCisgICAgdW5pb24geworICAgICAg
ICBzdHJ1Y3QgeworICAgICAgICAgICAgYm9vbCBtX2hhdmVNZXRhZGF0YSA6IDE7CisgICAgICAg
ICAgICBib29sIG1faXNDb21wbGV0ZSA6IDE7CisgICAgICAgICAgICBib29sIG1faGFzQWxwaGEg
OiAxOworICAgICAgICAgICAgYm9vbCBtX2FsbG93U3Vic2FtcGxpbmcgOiAxOworICAgICAgICB9
OworICAgICAgICB1aW50OF90IG1fZmxhZ3Nbc2l6ZW9mKGJvb2wpXSB7IDAgfTsKKyAgICB9Owor
ICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlcyB7IDAgfTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKK307
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBJbWFnZUZyYW1lRGF0
YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCmluZGV4IDM2MDAwNjcuLjEwMjIzNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwCkBAIC00MCwxNSArNDAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5h
dGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVy
KQotICAgICwgbV9zaXplKGNhaXJvU3VyZmFjZVNpemUobmF0aXZlSW1hZ2UuZ2V0KCkpKQogICAg
ICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25O
b25lKQogICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKICAgICAsIG1fcmVw
ZXRpdGlvbnNDb21wbGV0ZSgwKQotICAgICwgbV9kZWNvZGVkU2l6ZShtX3NpemUud2lkdGgoKSAq
IG1fc2l6ZS5oZWlnaHQoKSAqIDQpCiAgICAgLCBtX2ZyYW1lQ291bnQoMSkKLSAgICAsIG1faXNT
b2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkKICAg
ICAsIG1fYW5pbWF0aW9uRmluaXNoZWQodHJ1ZSkKICAgICAsIG1fYWxsRGF0YVJlY2VpdmVkKHRy
dWUpCiAgICAgLCBtX2hhdmVTaXplKHRydWUpCkBAIC01NiwxMSArNTIsOSBAQCBCaXRtYXBJbWFn
ZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJ
bWFnZU9ic2VydmVyKgogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQogewogICAgIG1fZnJh
bWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJvX3N1cmZhY2Vf
Z2V0X2NvbnRlbnQobmF0aXZlSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci0g
ICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IG5hdGl2ZUltYWdlOwotICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLQotICAgIGNoZWNrRm9yU29saWRDb2xvcigpOworICAgIG1f
ZnJhbWVzWzBdID0gSW1hZ2VGcmFtZURhdGEobmF0aXZlSW1hZ2UpOworICAgIG1fc2l6ZSA9IG1f
ZnJhbWVzWzBdLm1fc2l6ZTsKKyAgICBtX2RlY29kZWRTaXplID0gbV9zaXplLndpZHRoKCkgKiBt
X3NpemUuaGVpZ2h0KCkgKiA0OwogfQogCiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCwKQEAgLTEyNiwzNSArMTIwLDIxIEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRldGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKICAgICBt
X21heGltdW1TdWJzYW1wbGluZ0xldmVsID0gMDsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2hl
Y2tGb3JTb2xpZENvbG9yKCkKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCisgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICwgbV9oYXZl
TWV0YWRhdGEodHJ1ZSkKKyAgICAsIG1faXNDb21wbGV0ZSh0cnVlKQogewotICAgIG1faXNTb2xp
ZENvbG9yID0gZmFsc2U7Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRydWU7Ci0KLSAg
ICBpZiAoZnJhbWVDb3VudCgpID4gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1l
KTsKLSAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUg
YW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9n
ZXRfdHlwZShzdXJmYWNlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEludFNpemUgc2l6ZSA9IGNhaXJvU3VyZmFjZVNpemUoc3VyZmFj
ZS5nZXQoKSk7Ci0KLSAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAh
PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCogcGl4ZWxDb2xvciA9IHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShz
dXJmYWNlLmdldCgpKSk7Ci0gICAgbV9zb2xpZENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGll
ZEFSR0IoKnBpeGVsQ29sb3IpOwotCi0gICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOworICAgIEFT
U0VSVChtX2ltYWdlKTsKKyAgICBtX3NpemUgPSBjYWlyb1N1cmZhY2VTaXplKG1faW1hZ2UuZ2V0
KCkpOworICAgIG1fZnJhbWVCeXRlcyA9IG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgp
ICogNDsKKyAgICBtX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChtX2ltYWdl
LmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwogfQogCi1ib29sIEZyYW1lRGF0YTo6Y2xl
YXIoYm9vbCBjbGVhck1ldGFkYXRhKQorCitib29sIEltYWdlRnJhbWVEYXRhOjpjbGVhcihJbWFn
ZUZyYW1lQ2FjaGluZyBmcmFtZUNhY2hpbmcpCiB7Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCisg
ICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBJbWFnZUZyYW1lQ2FjaGluZzo6Q2FjaGVOb25lKQogICAg
ICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwogCiAgICAgaWYgKG1faW1hZ2UpIHsKQEAgLTE2
NCw2ICsxNDQsMjQgQEAgYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK09wdGlvbmFsPENvbG9yPiBJbWFnZUZyYW1lRGF0YTo6
c29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAKKyAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShtX2ltYWdlLmdl
dCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCisgICAgICAgIHJldHVybiBOdWxsb3B0
OworCisgICAgSW50U2l6ZSBzaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsK
KworICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCisgICAg
ICAgIHJldHVybiBOdWxsb3B0OworCisgICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSByZWludGVy
cHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEobV9p
bWFnZS5nZXQoKSkpOworICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4
ZWxDb2xvcik7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNF
KENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Qml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9C
aXRtYXBJbWFnZUNHLmNwcAppbmRleCBjYzdlY2Q4Li41YWMzMzZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAt
NDksMTAgKzQ5LDIzIEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorSW1h
Z2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkK
KyAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2hhdmVNZXRhZGF0YSh0cnVlKQorICAgICwg
bV9pc0NvbXBsZXRlKHRydWUpCisgICAgLCBtX2hhc0FscGhhKHRydWUpCit7CisgICAgQVNTRVJU
KG1faW1hZ2UpOworICAgIENHRmxvYXQgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgobV9pbWFnZS5n
ZXQoKSk7CisgICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KG1faW1hZ2UuZ2V0
KCkpOworICAgIG1fZnJhbWVCeXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKKyAgICBtX3NpemUg
PSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOworfQogCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9v
bCBjbGVhck1ldGFkYXRhKQorYm9vbCBJbWFnZUZyYW1lRGF0YTo6Y2xlYXIoSW1hZ2VGcmFtZUNh
Y2hpbmcgZnJhbWVDYWNoaW5nKQogewotICAgIGlmIChjbGVhck1ldGFkYXRhKQorICAgIGlmIChm
cmFtZUNhY2hpbmcgPT0gSW1hZ2VGcmFtZUNhY2hpbmc6OkNhY2hlTm9uZSkKICAgICAgICAgbV9o
YXZlTWV0YWRhdGEgPSBmYWxzZTsKIAogICAgIG1fb3JpZW50YXRpb24gPSBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbjsKQEAgLTY3LDYgKzgwLDI5IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29s
IGNsZWFyTWV0YWRhdGEpCiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KKyAgICAKK09wdGlv
bmFsPENvbG9yPiBJbWFnZUZyYW1lRGF0YTo6c29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2ltYWdlKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAKKyAgICAvLyBDdXJyZW50
bHkgd2Ugb25seSBjaGVjayBmb3Igc29saWQgY29sb3IgaW4gdGhlIGltcG9ydGFudCBzcGVjaWFs
IGNhc2Ugb2YgYSAxeDEgaW1hZ2UuCisgICAgaWYgKENHSW1hZ2VHZXRXaWR0aChtX2ltYWdlLmdl
dCgpKSAhPSAxIHx8IENHSW1hZ2VHZXRIZWlnaHQobV9pbWFnZS5nZXQoKSkgIT0gMSkKKyAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgCisgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8g
UkdCQQorICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0
bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAgICBpZiAoIWJpdG1hcENvbnRleHQpCisgICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgIAorICAgIEdyYXBoaWNzQ29udGV4dChiaXRtYXBDb250ZXh0Lmdl
dCgpKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgQ0dSZWN0IGRl
c3RpbmF0aW9uUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgMSwgMSk7CisgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCwgbV9pbWFnZS5nZXQo
KSk7CisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDAp
OworICAgIAorICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhl
bFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsz
XSk7Cit9CiAKIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKQEAgLTc3LDgg
KzExMyw2IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwg
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX2RlY29kZWRTaXplKDApCiAgICAgLCBt
X2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSgwKQogICAgICwgbV9mcmFtZUNvdW50KDEpCi0gICAgLCBt
X2lzU29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2Up
CiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKHRydWUpCiAgICAgLCBtX2FsbERhdGFSZWNlaXZl
ZCh0cnVlKQogICAgICwgbV9oYXZlU2l6ZSh0cnVlKQpAQCAtOTUsMTEgKzEyOSw3IEBAIEJpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpCiAgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXplOwogCiAg
ICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gaW1hZ2U7Ci0g
ICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IHRydWU7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXZl
TWV0YWRhdGEgPSB0cnVlOwotCi0gICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7CisgICAgbV9mcmFt
ZXNbMF0gPSBJbWFnZUZyYW1lRGF0YShpbWFnZSk7CiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRl
dGVybWluZU1pbmltdW1TdWJzYW1wbGluZ0xldmVsKCkgY29uc3QKQEAgLTEyNCw0OSArMTU0LDYg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGV0ZXJtaW5lTWluaW11bVN1YnNhbXBsaW5nTGV2ZWwoKSBj
b25zdAogICAgIG1fbWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwgPSBjdXJyZW50TGV2ZWw7CiB9CiAK
LXZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCi17Ci0gICAgbV9jaGVja2Vk
Rm9yU29saWRDb2xvciA9IHRydWU7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLQotICAg
IGlmIChmcmFtZUNvdW50KCkgPiAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWhhdmVG
cmFtZUltYWdlQXRJbmRleCgwKSkgewotICAgICAgICBJbnRTaXplIHNpemUgPSBtX3NvdXJjZS5m
cmFtZVNpemVBdEluZGV4KDAsIDApOwotICAgICAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwg
c2l6ZS5oZWlnaHQoKSAhPSAxKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICgh
ZW5zdXJlRnJhbWVJc0NhY2hlZCgwKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBDR0ltYWdlUmVmIGltYWdlID0gbnVsbHB0cjsKLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpKQot
ICAgICAgICBpbWFnZSA9IG1fZnJhbWVzWzBdLm1faW1hZ2UuZ2V0KCk7Ci0KLSAgICBpZiAoIWlt
YWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBjaGVjayBm
b3Igc29saWQgY29sb3IgaW4gdGhlIGltcG9ydGFudCBzcGVjaWFsIGNhc2Ugb2YgYSAxeDEgaW1h
Z2UuCi0gICAgaWYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gMSAmJiBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlKSA9PSAxKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJH
QkEKLSAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBz
UkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKLSAgICAgICAgaWYgKCFiaXRtYXBD
b250ZXh0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBHcmFwaGljc0NvbnRleHQoYml0
bWFwQ29udGV4dC5nZXQoKSkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwot
ICAgICAgICBDR1JlY3QgZGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKTsK
LSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIGRlc3RpbmF0
aW9uUmVjdCwgaW1hZ2UpOwotICAgICAgICBpZiAoIXBpeGVsWzNdKQotICAgICAgICAgICAgbV9z
b2xpZENvbG9yID0gQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fc29saWRDb2xvciA9IENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFd
ICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsK
LQotICAgICAgICBtX2lzU29saWRDb2xvciA9IHRydWU7Ci0gICAgfQotfQotCiBDR0ltYWdlUmVm
IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlUmVmKCkKIHsKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0
SW5kZXgoMCkuZ2V0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276545</attachid>
            <date>2016-04-15 22:19:48 -0700</date>
            <delta_ts>2016-04-15 23:04:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160415222003.patch</filename>
            <type>text/plain</type>
            <size>53068</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFjMDM1MTAyMjA1NjUz
NjljOGM5MzkxOTllY2EyYzJhMWZhNGZjZS4uMTgwMGRkMjM2NjI0OWVlYjk1NTVkNGVlN2QyOTZk
ZjZjNGJlZGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE2LTA0LTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgUmVuYW1l
IEZyYW1lRGF0YSB0byBJbWFnZUZyYW1lRGF0YSBhbmQgbW92ZSBpdCB0byBhIHNlcGFyYXRlIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ0
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzdGF0dXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmlzQ29tcGxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6OmZyYW1lQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURh
dGE6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpvcmllbnRhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3Vic2FtcGxpbmdMZXZlbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZHVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpoYXNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6aGFzTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZURhdGFBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VGcmFtZURhdGFDYWlyby5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aW1hZ2VBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6aW1hZ2VTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRt
YXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2Fs
ZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENv
bG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1l
RGF0YUNHLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xl
YXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZUFscGhhKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZVNvbGlkQ29sb3IpOgorCiAyMDE2LTA0LTE1
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2FsbGluZyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjo6YW5pbWF0aW9uRW5kZWQoKSB3aWxs
IGNyYXNoIGlmIHRoZSBTVkcgcHJvcGVydHkgaXMgbm90IGFuaW1hdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA1ZTYyMWVmYmY0NjY4OGM0ZTVjOTJhZTk1NmE1NTdiODliNTkxZTdkLi5kMzNl
NGJiMzczNjQxMmQ2MDRkZWY3ZGFkMGRhMDY4Y2Y4MjIzNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjIxMyw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0lTT1ZUVEN1ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVu
dGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKaW5kZXggNWZmOTkxZmY3ZGEzMDhiYjkxODJlY2UzYmYxMjE3MzBhNTQ4ZDI4Ny4uMWU3
NzJkNDkwOWNlN2FiZmIyMjQ4NDg4ZDY4NGEwYWNiOTUwMDg4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC02OCw2ICs2OCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VG
cmFtZURhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2lu
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCA4N2E5MWQwNTRhZWU5ODUyMGRiYjllNGY2NzQzNmFmZjcwNmFmM2JkLi41ODA5OThiNmJmOWZi
YmIyYTY4ZmE0Zjc2Njk0OTNiMmExNWJmNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMTMyLDYgKzEzMiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUZyYW1lRGF0YUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ludFJlY3RD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA5NTA4Y2U0ZWY5NmE0ZjAwMjVlMDRhYzUyOWIyYWMxOTVhNjBjMmYzLi45
YTVlNDJjZTRiOGY2MjBkZmRjNjc1NmM5ZGRiYzg1Y2Y4NWQ4YzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtMTA0LDYgKzEwNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUZyYW1lRGF0YUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ludFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fp
cm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBhZWEzNTcxMDU5MDliN2M3ZWUyMDU1Mjc1OWVhYzk5
ZjQ1NmQ1YTAwLi4yM2FkM2MzMTRiZjM2MzJhMWQ1N2Y3MzNhZmU3ODY5MDdlMmQ4NmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDA2LDYgKzQwNiw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VGcmFtZURhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5D
YWlyby5jbWFrZQppbmRleCAyYzU1M2IwNTUxZGFkNjlhYTE5OWQ5NjBmNTUyMzQzZDkyMGYwN2Iz
Li5jZmE3MmVjZjM2YjQ2MzQzZjVlOTAzYzIyYjNkZDIzZmI5MzdiMzdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKQEAgLTMwLDYgKzMwLDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRnJhbWVEYXRhQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW50UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fp
cm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGRlYTQ3YzM2M2VlZmY3MGY0NzUyOThjODNiNDM2MTEwMjQ2YjE5OC4uZjE4
Njk5MDBlNTFkMGRlMzIyYmE5ZDdlNWZjMzgyNzMyOGQzYmRjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjI2OCwxMCArMjI2
OCwxMyBAQAogCQk1M0VEM0ZERjE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdz
R2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0VEM0ZERDE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmggKi87IH07CiAJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkEx
NjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTUzRUY3NjZDMTY1
MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkExNjUzMEE2MTAw
NENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CisJCTU1MDEzRUQ5MUNDMUFDODMwMEQ0
NTFFMiAvKiBJbWFnZUZyYW1lRGF0YUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1MDEzRUQ4MUNDMUFDODMwMEQ0NTFFMiAvKiBJbWFnZUZyYW1l
RGF0YUNHLmNwcCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1
NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3
RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3
RUQxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyog
SW1hZ2VEZWNvZGVyQ0cuaCAqLzsgfTsKKwkJNTU3RDYwNzAxQ0MxN0M2RjAwREQxMjkxIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1N0Q2MDZFMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1N0Q2MDcxMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU3RDYwNkYxQ0MxN0M2
RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4MDM3MTYxMUE2NkYwMEEwMEJB
RjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovOyB9
OwpAQCAtOTg0OCwxMCArOTg1MSwxMyBAQAogCQk1M0VEM0ZEQzE2N0E4OEU3MDA2NzYyRTYgLyog
SlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzRUQzRkREMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFs
U2V0dGluZ3NHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJ
bnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5nc01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1NTAxM0VEODFDQzFBQzgzMDBENDUxRTIgLyogSW1hZ2VGcmFtZURhdGFD
Ry5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lRGF0
YUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAw
NzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTVCODdFQTFD
QUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU3RDYwNkUxQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdl
RnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
RnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU3RDYwNkYxQ0Mx
N0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGlj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyog
U2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4MTAs
NiArMjE4MTYsNyBAQAogCQkJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNw
cCAqLywKIAkJCQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3Bw
ICovLAogCQkJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICov
LAorCQkJCTU1MDEzRUQ4MUNDMUFDODMwMEQ0NTFFMiAvKiBJbWFnZUZyYW1lRGF0YUNHLmNwcCAq
LywKIAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovLAog
CQkJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovLAog
CQkJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLywKQEAgLTIx
OTcxLDYgKzIxOTc4LDggQEAKIAkJCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VC
dWZmZXIuY3BwICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZl
ci5oICovLAogCQkJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEu
aCAqLywKKwkJCQk1NTdENjA2RTFDQzE3QzZGMDBERDEyOTEgLyogSW1hZ2VGcmFtZURhdGEuY3Bw
ICovLAorCQkJCTU1N0Q2MDZGMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5oICov
LAogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8sCiAJ
CQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovLAog
CQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCkBA
IC0yNjgwMyw2ICsyNjgxMiw3IEBACiAJCQkJMDc2MzA2RTExN0UxNjA4OTAwNUE3QzRFIC8qIEpT
U291cmNlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE3RkVFQUQxNkE0RTc0QjAwNEMwQzMz
IC8qIEpTU3BlZWNoU3ludGhlc2lzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTJBNUFEMjE2QTQ4
NjBBMDA5NzZBMjUgLyogSlNTcGVlY2hTeW50aGVzaXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU3RDYwNzExQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBQTdGRUVBNzE2QTRFNkYzMDA0QzBDMzMgLyogSlNTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBN0ZFRUE5MTZBNEU2RjMwMDRDMEMzMyAv
KiBKU1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgyNDMyOTBE
MENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDczOCw2
ICszMDc0OCw3IEBACiAJCQkJRTQ0NjE0MUEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxNjE4ODMyMkVCMDBDOTU0QjUgLyogSlNU
b3VjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxODE4ODMyMkVCMDBDOTU0QjUgLyog
SlNUb3VjaEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU1N0Q2MDcwMUNDMTdDNkYwMERE
MTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxQTE4
ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcw
MzM0RTkxNDVBMUYzNjAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMwODk0LDYgKzMwOTA1LDcgQEAKIAkJCQlGQUJFNzJGNjEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGQUJFNzJGODEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDVEOTEzQ0VFQUIyQTYwNTM0MjE4QUNGIC8qIE1hdGhNTE1lbmNs
b3NlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NTAxM0VEOTFDQzFBQzgzMDBENDUx
RTIgLyogSW1hZ2VGcmFtZURhdGFDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJGRTEw
NTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5
MDQ2REYxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRUQ0ODM5MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1MU2VsZWN0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA3Yzc4ZDM2NWMxYTQwMmU2ZWMxOTRiNzcy
ZjU1YTllZGJkNmNkZTMzLi4wZmMyZTc3NGNmODg2YTJiMGU4ZWYzZDRhMGZkNzc5YzY0ZmFhNjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCkBAIC02MCw4ICs2MCw2IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlcikKICAgICAsIG1fcHJvZ3Jlc3NpdmVMb2FkQ2h1bmtUaW1lKDApCiAgICAg
LCBtX3Byb2dyZXNzaXZlTG9hZENodW5rQ291bnQoMCkKICNlbmRpZgotICAgICwgbV9pc1NvbGlk
Q29sb3IoZmFsc2UpCi0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQogICAgICwg
bV9hbmltYXRpb25GaW5pc2hlZChmYWxzZSkKICAgICAsIG1fYWxsRGF0YVJlY2VpdmVkKGZhbHNl
KQogICAgICwgbV9oYXZlU2l6ZShmYWxzZSkKQEAgLTcxLDYgKzY5LDMyIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fYW5pbWF0aW9u
RmluaXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKIH0KKyAgICAKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKKyAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9jdXJyZW50RnJhbWUoMCkKKyAgICAs
IG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQorICAgICwgbV9yZXBldGl0aW9uQ291
bnRTdGF0dXMoVW5rbm93bikKKyAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQorICAgICwg
bV9kZWNvZGVkU2l6ZSgwKQorICAgICwgbV9kZWNvZGVkUHJvcGVydGllc1NpemUoMCkKKyAgICAs
IG1fZnJhbWVDb3VudCgxKQorICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQorICAgICwg
bV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKKyAgICAsIG1faGF2ZVNpemUodHJ1ZSkKKyAgICAsIG1f
c2l6ZUF2YWlsYWJsZSh0cnVlKQorICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQoreworICAg
IG1fZnJhbWVzLmdyb3coMSk7CisgICAgbV9mcmFtZXNbMF0gPSBJbWFnZUZyYW1lRGF0YShpbWFn
ZSk7CisgICAgCisgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgorICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KKyAgICBtX3NpemUgPSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX2ZyYW1lc1sw
XS5zaXplKCk7CisgICAgbV9kZWNvZGVkU2l6ZSA9IG1fZnJhbWVzWzBdLmZyYW1lQnl0ZXMoKTsK
KyAgICAKKyAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKK30KIAogQml0bWFwSW1hZ2U6On5CaXRt
YXBJbWFnZSgpCiB7CkBAIC05OCw3ICsxMjIsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5z
aXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRl
eF0ubV9pbWFnZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmltYWdlKCk7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTExOCw4
ICsxNDIsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsKQogICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBmcmFtZSBpc24ndCBhY3R1YWxseSBj
aGFuZ2luZyAod2UncmUganVzdCB0cnlpbmcgdG8KICAgICAgICAgLy8gc2F2ZSB0aGUgbWVtb3J5
IGZvciB0aGUgZnJhbWVidWZmZXIgZGF0YSksIHNvIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIKICAg
ICAgICAgLy8gdGhlIG1ldGFkYXRhLgotICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9m
cmFtZXNbaV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoZmFs
c2UpKQorICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9mcmFtZXNbaV0uZnJhbWVCeXRl
cygpOworICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoQ2FjaGVNZXRhZGF0YSkpCiAgICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOwogICAgIH0KIApAQCAtMTQ0
LDcgKzE2OCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNz
YXJ5KGJvb2wgZGVzdHJveUFsbCkKIAogICAgIHVuc2lnbmVkIGFsbEZyYW1lQnl0ZXMgPSAwOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IGFsbEZyYW1lQnl0ZXMgKz0gbV9mcmFtZXNbaV0ubV9mcmFtZUJ5dGVzOworICAgICAgICBhbGxG
cmFtZUJ5dGVzICs9IG1fZnJhbWVzW2ldLmZyYW1lQnl0ZXMoKTsKIAogICAgIGlmIChhbGxGcmFt
ZUJ5dGVzID4gbGFyZ2VBbmltYXRpb25DdXRvZmYpCiAgICAgICAgIGRlc3Ryb3lEZWNvZGVkRGF0
YShkZXN0cm95QWxsKTsKQEAgLTE1Miw4ICsxNzYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwpCiAKIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeSh1bnNpZ25lZCBmcmFtZUJ5dGVzQ2xlYXJl
ZCwgQ2xlYXJlZFNvdXJjZSBjbGVhcmVkU291cmNlKQogewotICAgIG1faXNTb2xpZENvbG9yID0g
ZmFsc2U7Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IGZhbHNlOworICAgIG1fc29saWRD
b2xvciA9IE51bGxvcHQ7CiAgICAgaW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogCiAgICAgQVNT
RVJUKG1fZGVjb2RlZFNpemUgPj0gZnJhbWVCeXRlc0NsZWFyZWQpOwpAQCAtMTc3LDI5ICsyMDAs
MTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwg
bnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBpZiAo
ZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1l
c1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxp
bmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAm
JiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgICAgIGNoZWNrRm9yU29saWRDb2xv
cigpOwotICAgIH0KLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0aW9uID0gbV9zb3Vy
Y2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXZl
TWV0YWRhdGEgPSB0cnVlOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2lzQ29tcGxldGUgPSBtX3Nv
dXJjZS5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKLQotICAgIGlmIChyZXBldGl0aW9u
Q291bnQoZmFsc2UpICE9IGNBbmltYXRpb25Ob25lKQotICAgICAgICBtX2ZyYW1lc1tpbmRleF0u
bV9kdXJhdGlvbiA9IG1fc291cmNlLmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKLQotICAg
IG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoaW5kZXgpOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5m
cmFtZUJ5dGVzQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBjb25zdCBJ
bnRTaXplIGZyYW1lU2l6ZShpbmRleCA/IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpIDogbV9zaXplKTsKLSAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwg
JiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKKyAgICBtX2ZyYW1lc1tpbmRleF0gPSBtX3NvdXJjZS5j
cmVhdGVGcmFtZURhdGFBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBmcmFtZUNhY2hp
bmcpOworICAgIAorICAgIGlmIChpbmRleCAmJiBtX2ZyYW1lc1tpbmRleF0uc2l6ZSgpICE9IG1f
c2l6ZSkKICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7CiAKLSAgICBpZiAo
bV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKLSAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZl
Q2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOworICAgIGlmIChtX2ZyYW1l
c1tpbmRleF0uaGFzSW1hZ2UoKSkgeworICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0
PGludD4obV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSk7CiAgICAgICAgIG1fZGVjb2RlZFNp
emUgKz0gZGVsdGFCeXRlczsKICAgICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2ls
bCBzdWJzdW1lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVzZWQKICAgICAgICAgLy8gdG8g
ZGV0ZXJtaW5lIGltYWdlIHByb3BlcnRpZXMuCkBAIC0yODgsOSArMjk1LDggQEAgYm9vbCBCaXRt
YXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIE5P
VEU6IERvbid0IGNhbGwgZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgpIGhlcmUsIHRoYXQgd2lsbCB0
cnkgdG8KICAgICAgICAgLy8gZGVjb2RlIGFueSB1bmNhY2hlZCAoaS5lLiBuZXZlci1kZWNvZGVk
IG9yCiAgICAgICAgIC8vIGNsZWFyZWQtb24tYS1wcmV2aW91cy1wYXNzKSBmcmFtZXMhCi0gICAg
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0gICAg
ICAgIGlmIChtX2ZyYW1lc1tpXS5tX2hhdmVNZXRhZGF0YSAmJiAhbV9mcmFtZXNbaV0ubV9pc0Nv
bXBsZXRlKQotICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNs
ZWFyKHRydWUpID8gZnJhbWVCeXRlcyA6IDApOworICAgICAgICBpZiAobV9mcmFtZXNbaV0uaGFz
TWV0YWRhdGEoKSAmJiAhbV9mcmFtZXNbaV0uaXNDb21wbGV0ZSgpKQorICAgICAgICAgICAgZnJh
bWVCeXRlc0NsZWFyZWQgKz0gbV9mcmFtZXNbaV0uY2xlYXIoQ2FjaGVOb25lKTsKICAgICB9CiAg
ICAgZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU291
cmNlOjpObyk7CiAjZWxzZQpAQCAtMzY4LDggKzM3NCw4IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVu
c3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNh
Y2hpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5z
aXplKCkKLSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUg
JiYgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09
IENhY2hlTWV0YWRhdGFPbmx5ICYmICFtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpKQor
ICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRJbWFnZSAmJiAhbV9m
cmFtZXNbaW5kZXhdLmhhc0ltYWdlKCkpCisgICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2Fj
aGVNZXRhZGF0YSAmJiAhbV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpKQogICAgICAgICBj
YWNoZUZyYW1lKGluZGV4LCAwLCBmcmFtZUNhY2hpbmcpOwogCiAgICAgcmV0dXJuIHRydWU7CkBA
IC0zODQsMTAgKzM5MCw5IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjCiAKICAgICAvLyBXZSBt
YXkgaGF2ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEgaGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBp
biB3aGljaCBjYXNlIHdlIG5lZWQgdG8KICAgICAvLyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxl
dmVsLgotICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxp
bmdMZXZlbCkgeworICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tp
bmRleF0uaGFzSW1hZ2UoKSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLnN1
YnNhbXBsaW5nTGV2ZWwoKSkgewogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBj
YWNoZWQsIGJ1dCBhdCB0b28gc21hbGwgYSBzaXplLCByZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lv
bi4KLSAgICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRl
czsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpOworICAgICAgICBpbnQgc2l6
ZUNoYW5nZSA9IC1tX2ZyYW1lc1tpbmRleF0uY2xlYXIoQ2FjaGVOb25lKTsKICAgICAgICAgaW52
YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogICAgICAgICBtX2RlY29kZWRTaXplICs9IHNpemVDaGFu
Z2U7CiAgICAgICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCkBAIC0zOTUsMjYgKzQwMCwyNiBAQCBO
YXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBmbG9hdCBwcmVzZW50YXRpb25TYwogICAgIH0KIAogICAgIC8vIElmIHdlIGhhdmVuJ3QgZmV0
Y2hlZCBhIGZyYW1lIHlldCwgZG8gc28uCi0gICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUo
KSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCi0gICAgICAgIGNhY2hlRnJhbWUoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CisgICAgaWYgKGluZGV4
ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdlKCkpCisgICAg
ICAgIGNhY2hlRnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRJ
bWFnZSk7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CisgICAgcmV0dXJu
IG1fZnJhbWVzW2luZGV4XS5pbWFnZSgpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlz
Q29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXND
YWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXND
YWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsKKyAgICByZXR1cm4gbV9mcmFt
ZXNbaW5kZXhdLmlzQ29tcGxldGUoKTsKIH0KIAogZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNo
ZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNo
ZWQoaW5kZXgsIENhY2hlTWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbjsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhd
LmR1cmF0aW9uKCk7CiB9CiAKIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpCkBAIC00MjQsMTEgKzQyOSwxMSBAQCBOYXRpdmVJbWFnZVB0ciBC
aXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogCiBib29sIEJpdG1hcElt
YWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1
cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFlbnN1
cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICBy
ZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGE7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4
XS5oYXNNZXRhZGF0YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0FscGhh
KCk7CiAKICAgICByZXR1cm4gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwog
fQpAQCAtNDQwLDExICs0NDUsMTEgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKCkKIAogSW1hZ2VPcmllbnRhdGlvbiBCaXRtYXBJbWFnZTo6ZnJhbWVPcmll
bnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0Nh
Y2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0Nh
Y2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0
aW9uKCk7CiAKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAg
ICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb247CisgICAgaWYgKG1fZnJhbWVz
W2luZGV4XS5oYXNNZXRhZGF0YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm9y
aWVudGF0aW9uKCk7CiAKICAgICByZXR1cm4gbV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGlu
ZGV4KTsKIH0KQEAgLTY2NywxOSArNjcyLDQwIEBAIGJvb2wgQml0bWFwSW1hZ2U6OmludGVybmFs
QWR2YW5jZUFuaW1hdGlvbihBbmltYXRpb25BZHZhbmNlbWVudCBhZHZhbmNlbWVudCkKIAogICAg
IHJldHVybiBhZHZhbmNlZEFuaW1hdGlvbjsKIH0KKyAgICAKK3ZvaWQgQml0bWFwSW1hZ2U6OmNo
ZWNrRm9yU29saWRDb2xvcigpCit7CisgICAgbV9zb2xpZENvbG9yID0gQ29sb3IoKTsKKyAgICAK
KyAgICBpZiAoZnJhbWVDb3VudCgpICE9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
KGVuc3VyZUZyYW1lSXNDYWNoZWQoMCwgQ2FjaGVNZXRhZGF0YSkgJiYgbV9mcmFtZXMuc2l6ZSgp
ICYmIG1fZnJhbWVzWzBdLmhhc01ldGFkYXRhKCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAobV9mcmFtZXNbMF0uc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICghKGVuc3VyZUZyYW1lSXNDYWNoZWQoMCwgQ2FjaGVNZXRhZGF0YUFuZEltYWdl
KSAmJiBtX2ZyYW1lc1swXS5oYXNJbWFnZSgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9z
b2xpZENvbG9yID0gbV9mcmFtZXNbMF0uc29saWRDb2xvcigpOworfQogCiBib29sIEJpdG1hcElt
YWdlOjptYXlGaWxsV2l0aFNvbGlkQ29sb3IoKQogewotICAgIGlmICghbV9jaGVja2VkRm9yU29s
aWRDb2xvciAmJiBmcmFtZUNvdW50KCkgPiAwKSB7CisgICAgaWYgKGZyYW1lQ291bnQoKSAhPSAx
IHx8IG1fY3VycmVudEZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KCFtX3NvbGlkQ29sb3IpCiAgICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwotICAgICAgICBB
U1NFUlQobV9jaGVja2VkRm9yU29saWRDb2xvcik7Ci0gICAgfQotICAgIHJldHVybiBtX2lzU29s
aWRDb2xvciAmJiAhbV9jdXJyZW50RnJhbWU7CisgICAgCisgICAgcmV0dXJuIHNvbGlkQ29sb3Io
KS5pc1ZhbGlkKCk7CiB9CiAKIENvbG9yIEJpdG1hcEltYWdlOjpzb2xpZENvbG9yKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9zb2xpZENvbG9yOworICAgIHJldHVybiBtX3NvbGlkQ29sb3IgPyBt
X3NvbGlkQ29sb3IudmFsdWUoKSA6IENvbG9yKCk7CiB9CiAgICAgCiBib29sIEJpdG1hcEltYWdl
OjpjYW5BbmltYXRlKCkKQEAgLTY5OSw4ICs3MjUsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkdW1w
KFRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImN1cnJlbnQt
ZnJhbWUiLCBtX2N1cnJlbnRGcmFtZSk7CiAgICAgfQogICAgIAotICAgIGlmIChtX2lzU29saWRD
b2xvcikKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzb2xpZC1jb2xvciIsIG1faXNTb2xpZENv
bG9yKTsKKyAgICBpZiAobV9zb2xpZENvbG9yKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNv
bGlkLWNvbG9yIiwgbV9zb2xpZENvbG9yLnZhbHVlKCkpOwogICAgIAogICAgIG1fc291cmNlLmR1
bXAodHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKaW5kZXggN2M4ZWNhY2ZjNmM2MWM5NDQ0ZDYxYWRkNGUyNzk3NmNiMjAyMWQ1MC4uZWJh
MzM3YWJkOTRjNDNlOTc2Y2Y2Y2EzOGVmMTVlMjU1YzFiYzA5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0yOCw4ICsyOCw5IEBACiAj
aWZuZGVmIEJpdG1hcEltYWdlX2gKICNkZWZpbmUgQml0bWFwSW1hZ2VfaAogCi0jaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVk
ZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCkBAIC02MCw0NiArNjEs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRpbWVyOwogCi0vLyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEZyYW1lRGF0YSBDbGFz
cwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0K
LXN0cnVjdCBGcmFtZURhdGEgewotcHVibGljOgotICAgIEZyYW1lRGF0YSgpCi0gICAgICAgIDog
bV9vcmllbnRhdGlvbihEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKLSAgICAgICAgLCBtX3N1YnNh
bXBsaW5nTGV2ZWwoMCkKLSAgICAgICAgLCBtX2R1cmF0aW9uKDApCi0gICAgICAgICwgbV9oYXZl
TWV0YWRhdGEoZmFsc2UpCi0gICAgICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQotICAgICAgICAs
IG1faGFzQWxwaGEodHJ1ZSkKLSAgICAgICAgLCBtX2ZyYW1lQnl0ZXMoMCkKLSAgICB7Ci0gICAg
fQotCi0gICAgfkZyYW1lRGF0YSgpCi0gICAgeyAKLSAgICAgICAgY2xlYXIodHJ1ZSk7Ci0gICAg
fQotCi0gICAgLy8gQ2xlYXIgdGhlIGNhY2hlZCBpbWFnZSBkYXRhIG9uIHRoZSBmcmFtZSwgYW5k
IChvcHRpb25hbGx5KSB0aGUgbWV0YWRhdGEuCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJl
IHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4KLSAgICBib29sIGNsZWFyKGJvb2wgY2xl
YXJNZXRhZGF0YSk7Ci0KLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwotICAgIEltYWdlT3Jp
ZW50YXRpb24gbV9vcmllbnRhdGlvbjsKLSAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxp
bmdMZXZlbDsKLSAgICBmbG9hdCBtX2R1cmF0aW9uOwotICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEg
OiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsKLSAgICBib29sIG1faGFzQWxwaGEgOiAx
OwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlczsKLX07Ci0KLS8vID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0v
LyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KIGNs
YXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3Mg
R2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OwpAQCAtMjIxLDExICsxODIsMTAgQEAgcHJvdGVjdGVkOgogICAgIEltYWdlT3JpZW50YXRpb24g
ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KTsKIAogICAgIC8vIERlY29kZXMgYW5kIGNh
Y2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBleGNlcHQgaW50ZXJuYWxseS4KLSAgICBlbnVt
IEltYWdlRnJhbWVDYWNoaW5nIHsgQ2FjaGVNZXRhZGF0YU9ubHksIENhY2hlTWV0YWRhdGFBbmRG
cmFtZSB9OwotICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICB2b2lk
IGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2Fj
aGluZyA9IENhY2hlTWV0YWRhdGFBbmRJbWFnZSk7CiAKICAgICAvLyBDYWxsZWQgYmVmb3JlIGFj
Y2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0gZm9yIGluZm8gd2l0aG91dCBkZWNvZGluZy4gUmV0dXJu
cyBmYWxzZSBvbiBpbmRleCBvdXQgb2YgYm91bmRzLgotICAgIGJvb2wgZW5zdXJlRnJhbWVJc0Nh
Y2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZy
YW1lKTsKKyAgICBib29sIGVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZy
YW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRJbWFnZSk7CiAKICAgICAvLyBDYWxsZWQgdG8g
aW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hlbiB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lw
ZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZyYW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUg
aW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAgLTI3Miw4ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCk7CiAKICAgICAvLyBDaGVja3MgdG8gc2Vl
IGlmIHRoZSBpbWFnZSBpcyBhIDF4MSBzb2xpZCBjb2xvci4gV2Ugb3B0aW1pemUgdGhlc2UgaW1h
Z2VzIGFuZCBqdXN0IGRvIGEgZmlsbCByZWN0IGluc3RlYWQuCi0gICAgLy8gVGhpcyBjaGVjayBz
aG91bGQgaGFwcGVuIHJlZ2FyZGxlc3Mgd2hldGhlciBtX2NoZWNrZWRGb3JTb2xpZENvbG9yIGlz
IGFscmVhZHkgc2V0LCBhcyB0aGUgZnJhbWUgbWF5IGhhdmUKLSAgICAvLyBjaGFuZ2VkLgorICAg
IC8vIFRoaXMgY2hlY2sgc2hvdWxkIGhhcHBlbiByZWdhcmRsZXNzIHdoZXRoZXIgbV9zb2xpZENv
bG9yIGlzIGFscmVhZHkgc2V0LCBhcyB0aGUgZnJhbWUgbWF5IGhhdmUgY2hhbmdlZC4KICAgICB2
b2lkIGNoZWNrRm9yU29saWRDb2xvcigpOwogCiAgICAgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29s
b3IoKSBvdmVycmlkZTsKQEAgLTI5NCw3ICsyNTMsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUg
SW50U2l6ZSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb247CiAKICAgICBzaXplX3QgbV9jdXJy
ZW50RnJhbWU7IC8vIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24u
Ci0gICAgVmVjdG9yPEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBj
YWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBw
aW4gdGhlbSBpbiB0aGUgY2FjaGUuCisgICAgVmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2Zy
YW1lczsgLy8gQW4gYXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4g
V2UgaGF2ZSB0byByZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9mcmFtZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25D
b3VudDsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4gVGhp
cyB3aWxsIGJlIGNBbmltYXRpb25Ob25lIGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUg
b2YgYW5pbWF0aW9uLgpAQCAtMzA5LDcgKzI2OCw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3RpZmZSZXA7IC8vIENhY2hlZCBUSUZGIHJlcCBmb3IgZnJh
bWUgMC4gT25seSBidWlsdCBsYXppbHkgaWYgc29tZW9uZSBxdWVyaWVzIGZvciBvbmUuCiAjZW5k
aWYKIAotICAgIENvbG9yIG1fc29saWRDb2xvcjsgIC8vIElmIHdlJ3JlIGEgMXgxIHNvbGlkIGNv
bG9yLCB0aGlzIGlzIHRoZSBjb2xvciB0byB1c2UgdG8gZmlsbC4KKyAgICBPcHRpb25hbDxDb2xv
cj4gbV9zb2xpZENvbG9yOyAvLyBJZiB3ZSdyZSBhIDF4MSBzb2xpZCBjb2xvciwgdGhpcyBpcyB0
aGUgY29sb3IgdG8gdXNlIHRvIGZpbGwuCiAKICAgICB1bnNpZ25lZCBtX2RlY29kZWRTaXplOyAv
LyBUaGUgY3VycmVudCBzaXplIG9mIGFsbCBkZWNvZGVkIGZyYW1lcy4KICAgICBtdXRhYmxlIHVu
c2lnbmVkIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplOyAvLyBUaGUgc2l6ZSBvZiBkYXRhIGRlY29k
ZWQgYnkgdGhlIHNvdXJjZSB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcyAoZS5nLiBzaXpl
LCBmcmFtZSBjb3VudCwgZXRjKS4KQEAgLTMyMCw5ICsyNzksNiBAQCBwcml2YXRlOgogICAgIGRv
dWJsZSBtX3Byb2dyZXNzaXZlTG9hZENodW5rVGltZTsKICAgICB1aW50MTZfdCBtX3Byb2dyZXNz
aXZlTG9hZENodW5rQ291bnQ7CiAjZW5kaWYKLSAgICBib29sIG1faXNTb2xpZENvbG9yIDogMTsg
Ly8gV2hldGhlciBvciBub3Qgd2UgYXJlIGEgMXgxIHNvbGlkIGltYWdlLgotICAgIGJvb2wgbV9j
aGVja2VkRm9yU29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgd2UndmUgY2hlY2tlZCB0aGUgZnJh
bWUgZm9yIHNvbGlkIGNvbG9yLgotCiAgICAgYm9vbCBtX2FuaW1hdGlvbkZpbmlzaGVkIDogMTsg
Ly8gV2hldGhlciBvciBub3Qgd2UndmUgY29tcGxldGVkIHRoZSBlbnRpcmUgYW5pbWF0aW9uLgog
CiAgICAgYm9vbCBtX2FsbERhdGFSZWNlaXZlZCA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlJ3Zl
IHJlY2VpdmVkIGFsbCBvdXIgZGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWUzNjk1NmRjOGJiNTU5
MzRkN2Q2ZmRmNjA5YzkzOGQ2OTE5NTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCkBAIC0wLDAgKzEsOTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCisKKyNpbmNsdWRlICJJbWFn
ZURlY29kZXJDRy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitJbWFnZUZyYW1lRGF0
YTo6SW1hZ2VGcmFtZURhdGEoKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURh
dGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorICAgIDogbV9zdGF0dXMoRnJhbWVDb21w
bGV0ZSkKKyAgICAsIG1fc2l6ZShJbWFnZUZyYW1lRGF0YTo6aW1hZ2VTaXplKGltYWdlKSkKKyAg
ICAsIG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2hhc0FscGhhKEltYWdlRnJhbWVEYXRhOjppbWFn
ZUFscGhhKGltYWdlKSkKK3sKK30KKworSW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKGNv
bnN0IEltYWdlRGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAg
ICBBU1NFUlQoZnJhbWVDYWNoaW5nICYgQ2FjaGVNZXRhZGF0YSk7CisKKyAgICBpZiAoZnJhbWVD
YWNoaW5nICYgQ2FjaGVJbWFnZSkgeworICAgICAgICBtX2ltYWdlID0gZGVjb2Rlci5jcmVhdGVG
cmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgICAgIG1fc3Vi
c2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7CisgICAgfQorCisgICAgaWYgKGZyYW1l
Q2FjaGluZyAmIENhY2hlTWV0YWRhdGEpIHsKKyAgICAgICAgbV9vcmllbnRhdGlvbiA9IGRlY29k
ZXIub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKKyAgICAgICAgbV9zdGF0dXMgPSBkZWNvZGVy
LmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpID8gRnJhbWVDb21wbGV0ZSA6IEZyYW1lUGFy
dGlhbDsKKyAgICAgICAgCisgICAgICAgIGlmIChkZWNvZGVyLnJlcGV0aXRpb25Db3VudCgpICE9
IGNBbmltYXRpb25Ob25lKQorICAgICAgICAgICAgbV9kdXJhdGlvbiA9IGRlY29kZXIuZnJhbWVE
dXJhdGlvbkF0SW5kZXgoaW5kZXgpOworCisgICAgICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZy
YW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICAgICAgbV9zaXplID0gZGVjb2Rlci5mcmFt
ZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICB9Cit9CisKK0ltYWdl
RnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEoKQoreworICAgIGNsZWFySW1hZ2UoKTsKK30KKwor
dW5zaWduZWQgSW1hZ2VGcmFtZURhdGE6OmNsZWFyKEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2Fj
aGluZykKK3sKKyAgICBBU1NFUlQoIShmcmFtZUNhY2hpbmcgJiBDYWNoZUltYWdlKSk7CisKKyAg
ICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gdGhpcy0+ZnJhbWVCeXRlcygpOworCisgICAgY2xlYXJJ
bWFnZSgpOworCisgICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU5vbmUpCisgICAgICAgICp0
aGlzID0gSW1hZ2VGcmFtZURhdGEoKTsKKworICAgIHJldHVybiBmcmFtZUJ5dGVzOworfQorICAg
IAorQ29sb3IgSW1hZ2VGcmFtZURhdGE6OnNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmICht
X3NpemUgIT0gSW50U2l6ZSgxLCAxKSB8fCAhaGFzSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIENv
bG9yKCk7CisgICAgCisgICAgcmV0dXJuIEltYWdlRnJhbWVEYXRhOjppbWFnZVNvbGlkQ29sb3Io
bV9pbWFnZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmM2JkNjI4Nzk0NzhmNzJjZmVhNDVkNjQ3
ZDRjNmRmYmY1NDM4NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW1hZ2VGcmFtZURh
dGFfaAorI2RlZmluZSBJbWFnZUZyYW1lRGF0YV9oCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2lu
Y2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIAorLy8gU3Vic2FtcGxpbmdMZXZlbC4gMCBpcyBubyBzdWJzYW1w
bGluZywgMSBpcyBoYWxmIGRpbWVuc2lvbnMgb24gZWFjaCBheGlzIGV0Yy4KK3R5cGVkZWYgc2hv
cnQgU3Vic2FtcGxpbmdMZXZlbDsKKworY29uc3QgU3Vic2FtcGxpbmdMZXZlbCBNaW5TdWJzYW1w
bGluZ0xldmVsID0gMDsKK2NvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgTWF4U3Vic2FtcGxpbmdMZXZl
bCA9IDM7Citjb25zdCBTdWJzYW1wbGluZ0xldmVsIERlZmF1bHRTdWJzYW1wbGluZ0xldmVsID0g
TWluU3Vic2FtcGxpbmdMZXZlbDsKKworZW51bSBJbWFnZUZyYW1lQ2FjaGluZyB7CisgICAgQ2Fj
aGVOb25lLAorICAgIENhY2hlTWV0YWRhdGEsCisgICAgQ2FjaGVJbWFnZSwKKyAgICBDYWNoZU1l
dGFkYXRhQW5kSW1hZ2UKK307CisKK2VudW0gSW1hZ2VGcmFtZVN0YXR1cyB7CisgICAgRnJhbWVF
bXB0eSwKKyAgICBGcmFtZVBhcnRpYWwsCisgICAgRnJhbWVDb21wbGV0ZQorfTsKKworY2xhc3Mg
SW1hZ2VEZWNvZGVyOworCitjbGFzcyBJbWFnZUZyYW1lRGF0YSB7CitwdWJsaWM6CisgICAgSW1h
Z2VGcmFtZURhdGEoKTsKKyAgICBJbWFnZUZyYW1lRGF0YShjb25zdCBOYXRpdmVJbWFnZVB0ciYp
OworICAgIEltYWdlRnJhbWVEYXRhKGNvbnN0IEltYWdlRGVjb2RlciYsIHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2Fj
aGluZyA9IENhY2hlTWV0YWRhdGFBbmRJbWFnZSk7CisgICAgCisgICAgfkltYWdlRnJhbWVEYXRh
KCk7CisgICAgCisgICAgdW5zaWduZWQgY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmcpOworICAgIENv
bG9yIHNvbGlkQ29sb3IoKSBjb25zdDsKKyAgICAKKyAgICBJbWFnZUZyYW1lU3RhdHVzIHN0YXR1
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAgYm9vbCBpc0NvbXBsZXRlKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gRnJhbWVDb21wbGV0ZTsgfQorICAgIEludFNpemUgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMoKSBj
b25zdCB7IHJldHVybiBoYXNJbWFnZSgpID8gbV9zaXplLmFyZWEoKSAqIDQgOiAwOyB9CisgICAg
TmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisgICAgCisg
ICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50
YXRpb247IH0KKyAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwoKSBjb25zdCB7
IHJldHVybiBtX3N1YnNhbXBsaW5nTGV2ZWw7IH0KKyAgICBmbG9hdCBkdXJhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKyAgICAKKyAgICBib29sIGhhc0FscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNBbHBoYTsgfQorICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlOyB9CisgICAgYm9vbCBoYXNNZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuICFtX3Np
emUuaXNFbXB0eSgpOyB9CisgICAgCitwcml2YXRlOgorICAgIHZvaWQgY2xlYXJJbWFnZSgpOwor
ICAgIAorICAgIHN0YXRpYyBJbnRTaXplIGltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYp
OworICAgIHN0YXRpYyBib29sIGltYWdlQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAg
ICBzdGF0aWMgQ29sb3IgaW1hZ2VTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Cisg
ICAgCisgICAgSW1hZ2VGcmFtZVN0YXR1cyBtX3N0YXR1cyB7IEZyYW1lRW1wdHkgfTsKKyAgICBJ
bnRTaXplIG1fc2l6ZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIAorICAgIElt
YWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07
CisgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07CisgICAgZmxv
YXQgbV9kdXJhdGlvbiB7IDAgfTsKKyAgICBib29sIG1faGFzQWxwaGEgeyB0cnVlIH07Cit9Owor
ICAgIAorfQorCisjZW5kaWYgLy8gSW1hZ2VGcmFtZURhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDdlZDlmZDFkMDc2Nzkz
ZGZmNGRmN2NkMjNkNzdmNTgxYjhkYWEyOGIuLmMxMDhjZjExMTU2MmMyZWE5MjIxNTgzNjhmYTY2
NGEwNjc1NDM0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKQEAgLTIxNCw2ICsyMTQsMTEgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VT
b3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXYKIHsKICAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKIH0KKyAgICAK
K0ltYWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZURhdGFBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2Fj
aGluZyBmcmFtZUNhY2hpbmcpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBJbWFnZUZy
YW1lRGF0YSgqbV9kZWNvZGVyLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgZnJhbWVDYWNoaW5n
KSA6IEltYWdlRnJhbWVEYXRhKCk7Cit9CiAKIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0
cmVhbSYgdHMpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaAppbmRleCBhODk4MDc2MWI0NDE3MmE2ODgzMzVhYjk3OTBiODk0OGQ3MzEw
M2Y5Li5hYzM2MWQ3NzdlMTAyMWVkOTRkNTg3NWM2ZmE0MjMxYjk5NzFiMTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI3LDYgKzI3
LDcgQEAKICNpZm5kZWYgSW1hZ2VTb3VyY2VfaAogI2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKKyNp
bmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIK
ICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCkBAIC02
Myw5ICs2NCw2IEBAIGNvbnN0IGludCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50
IGNBbmltYXRpb25Mb29wSW5maW5pdGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9
IC0yOwogCi0vLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhh
bGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGlu
Z0xldmVsOwotCiBjbGFzcyBJbWFnZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW1hZ2VTb3VyY2UpOwogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTEyOSwxOCAr
MTI3LDE5IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRl
eChzaXplX3QpIGNvbnN0OwogICAgIAogICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1w
bGVkIGZyYW1lLgotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwgPSAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uKSBjb25zdDsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJ
bWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0
OwogICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVk
IGZyYW1lLiBJZiB0aGUgZnJhbWUgaXMgbm90IHlldAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1
cm4gMC4KLSAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSAwKSBjb25zdDsKKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAg
CiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9y
aWVudGF0aW9uCiAgICAgCiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRl
ciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVu
dHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZh
dWx0U3Vic2FtcGxpbmdMZXZlbCk7CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVEYXRh
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZl
bCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kSW1hZ2UpOwogICAgIAogcHJp
dmF0ZToKICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcAppbmRleCAxZjRlZTIwNzY2YzE1ZGNkN2UwYWU2Y2JjMGQ0YmQxYzczNDUxNjAx
Li5jMjQ2YzJmNTMxMTJmYmU2MzJiY2Y5NGRiNmI5YjdkMDI1MjQyY2JiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFn
ZUNhaXJvLmNwcApAQCAtMzgsMzEgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1C
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mJiBuYXRpdmVJ
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCi0gICAgOiBJbWFnZShvYnNlcnZlcikKLSAg
ICAsIG1fc2l6ZShjYWlyb1N1cmZhY2VTaXplKG5hdGl2ZUltYWdlLmdldCgpKSkKLSAgICAsIG1f
Y3VycmVudEZyYW1lKDApCi0gICAgLCBtX3JlcGV0aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkK
LSAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzKFVua25vd24pCi0gICAgLCBtX3JlcGV0aXRp
b25zQ29tcGxldGUoMCkKLSAgICAsIG1fZGVjb2RlZFNpemUobV9zaXplLndpZHRoKCkgKiBtX3Np
emUuaGVpZ2h0KCkgKiA0KQotICAgICwgbV9mcmFtZUNvdW50KDEpCi0gICAgLCBtX2lzU29saWRD
b2xvcihmYWxzZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBt
X2FuaW1hdGlvbkZpbmlzaGVkKHRydWUpCi0gICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQot
ICAgICwgbV9oYXZlU2l6ZSh0cnVlKQotICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCi0gICAg
LCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCi17Ci0gICAgbV9mcmFtZXMuZ3JvdygxKTsKLSAgICBt
X2ZyYW1lc1swXS5tX2hhc0FscGhhID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChuYXRpdmVJ
bWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKLSAgICBtX2ZyYW1lc1swXS5tX2lt
YWdlID0gV1RGTW92ZShuYXRpdmVJbWFnZSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRh
dGEgPSB0cnVlOwotCi0gICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7Ci19Ci0KIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAogICAgIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikK
IHsKQEAgLTEyMSw0NCArOTYsNiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAgICBp
bWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmNo
ZWNrRm9yU29saWRDb2xvcigpCi17Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICBt
X2NoZWNrZWRGb3JTb2xpZENvbG9yID0gdHJ1ZTsKLQotICAgIGlmIChmcmFtZUNvdW50KCkgPiAx
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJs
eSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9U
WVBFX0lNQUdFKQotICAgICAgICByZXR1cm47Ci0KLSAgICBJbnRTaXplIHNpemUgPSBjYWlyb1N1
cmZhY2VTaXplKHN1cmZhY2UuZ2V0KCkpOwotCi0gICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8
IHNpemUuaGVpZ2h0KCkgIT0gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5zaWduZWQqIHBp
eGVsQ29sb3IgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZS5nZXQoKSkpOwotICAgIG1fc29saWRDb2xvciA9IGNvbG9y
RnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbENvbG9yKTsKLQotICAgIG1faXNTb2xpZENvbG9y
ID0gdHJ1ZTsKLX0KLQotYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkK
LXsKLSAgICBpZiAoY2xlYXJNZXRhZGF0YSkKLSAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxz
ZTsKLQotICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIG1faW1hZ2UgPSBudWxscHRyOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUZyYW1lRGF0YUNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRnJhbWVEYXRh
Q2Fpcm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1MDRjZTdhZWY0ODk5ZDg2MjU0M2ZlMDgyYjA1MGM1NTc1
OGZkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUZyYW1lRGF0YUNhaXJvLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgorCisjaWYgVVNFKENBSVJPKQorCisjaW5j
bHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIElt
YWdlRnJhbWVEYXRhOjpjbGVhckltYWdlKCkKK3sKKyAgICBtX2ltYWdlID0gbnVsbHB0cjsKK30K
KworSW50U2l6ZSBJbWFnZUZyYW1lRGF0YTo6aW1hZ2VTaXplKGNvbnN0IFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+JiBpbWFnZSkKK3sKKyAgICByZXR1cm4gaW1hZ2UgPyBjYWlyb1N1cmZhY2VTaXpl
KGltYWdlLmdldCgpKSA6IEludFNpemUoKTsKK30KKworYm9vbCBJbWFnZUZyYW1lRGF0YTo6aW1h
Z2VBbHBoYShjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCit7CisgICAgcmV0
dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRF
TlRfQ09MT1I7Cit9CisKK0NvbG9yIEltYWdlRnJhbWVEYXRhOjppbWFnZVNvbGlkQ29sb3IoY29u
c3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQoreworICAgIGlmIChjYWlyb19zdXJm
YWNlX2dldF90eXBlKGltYWdlLmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCisg
ICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgSW50U2l6ZSBzaXplID0gY2Fpcm9TdXJmYWNl
U2l6ZShpbWFnZS5nZXQoKSk7CisKKyAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5o
ZWlnaHQoKSAhPSAxKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIHVuc2lnbmVkKiBw
aXhlbENvbG9yID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7CisgICAgbV9zb2xpZENvbG9yID0gY29sb3JG
cm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29sb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IDY5MzJhMTJmZGY4
YzExOGRkYjI0Yzg5MjdjZWM1Y2YxZmQ2NWViYmEuLjVmMWJiYjY3MTBmZmU2MTkwNmEzYzNmOTMx
ZWRlMTdlNmViZWM3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC01MCwxMDAgKzUwLDYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRh
KQotewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAgICAgICBtX2hhdmVNZXRhZGF0YSA9IGZh
bHNlOwotCi0gICAgbV9zdWJzYW1wbGluZ0xldmVsID0gMDsKLQotICAgIGlmIChtX2ltYWdlKSB7
Ci0jaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdl
KG1faW1hZ2UuZ2V0KCkpOwotI2VuZGlmCi0gICAgICAgIG1faW1hZ2UgPSBudWxscHRyOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1CaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIEltYWdlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQotICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX2N1cnJlbnRG
cmFtZSgwKQotICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCi0gICAgLCBt
X3JlcGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQotICAgICwgbV9yZXBldGl0aW9uc0NvbXBs
ZXRlKDApCi0gICAgLCBtX2RlY29kZWRTaXplKDApCi0gICAgLCBtX2RlY29kZWRQcm9wZXJ0aWVz
U2l6ZSgwKQotICAgICwgbV9mcmFtZUNvdW50KDEpCi0gICAgLCBtX2lzU29saWRDb2xvcihmYWxz
ZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2FuaW1hdGlv
bkZpbmlzaGVkKHRydWUpCi0gICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQotICAgICwgbV9o
YXZlU2l6ZSh0cnVlKQotICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCi0gICAgLCBtX2hhdmVG
cmFtZUNvdW50KHRydWUpCi17Ci0gICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChp
bWFnZS5nZXQoKSk7Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
LmdldCgpKTsKLSAgICBtX2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0OwotICAgIG1f
c2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7Ci0KLSAgICAvLyBTaW5jZSB3ZSBkb24ndCBo
YXZlIGEgZGVjb2Rlciwgd2UgY2FuJ3QgZmlndXJlIG91dCB0aGUgaW1hZ2Ugb3JpZW50YXRpb24u
Ci0gICAgLy8gU2V0IG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiB0byBiZSB0aGUgc2FtZSBh
cyBtX3NpemUgc28gaXQncyBub3QgMHgwLgotICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlv
biA9IG1fc2l6ZTsKLQotICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9p
bWFnZSA9IFdURk1vdmUoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSB0cnVl
OwotICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLQotICAgIGNoZWNrRm9y
U29saWRDb2xvcigpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3Io
KQotewotICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVlOwotICAgIG1faXNTb2xpZENv
bG9yID0gZmFsc2U7Ci0KLSAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKCFoYXZlRnJhbWVJbWFnZUF0SW5kZXgoMCkpIHsKLSAgICAgICAgSW50U2l6
ZSBzaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLSAgICAgICAgaWYgKHNp
emUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoMCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IG51bGxwdHI7Ci0gICAgaWYg
KG1fZnJhbWVzLnNpemUoKSkKLSAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1swXS5tX2ltYWdlLmdl
dCgpOwotCi0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gQ3VycmVu
dGx5IHdlIG9ubHkgY2hlY2sgZm9yIHNvbGlkIGNvbG9yIGluIHRoZSBpbXBvcnRhbnQgc3BlY2lh
bCBjYXNlIG9mIGEgMXgxIGltYWdlLgotICAgIGlmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09
IDEgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gMSkgewotICAgICAgICB1bnNpZ25lZCBj
aGFyIHBpeGVsWzRdOyAvLyBSR0JBCi0gICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGJp
dG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwg
OCwgc2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwKLSAgICAgICAgICAgIGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7Ci0g
ICAgICAgIGlmICghYml0bWFwQ29udGV4dCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0KGJpdG1hcENvbnRleHQuZ2V0KCkpLnNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVDb3B5KTsKLSAgICAgICAgQ0dSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IENHUmVj
dE1ha2UoMCwgMCwgMSwgMSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRtYXBDb250
ZXh0LmdldCgpLCBkZXN0aW5hdGlvblJlY3QsIGltYWdlKTsKLSAgICAgICAgaWYgKCFwaXhlbFsz
XSkKLSAgICAgICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKDAsIDAsIDAsIDApOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcihwaXhlbFswXSAqIDI1NSAv
IHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBp
eGVsWzNdLCBwaXhlbFszXSk7Ci0KLSAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOwotICAg
IH0KLX0KLQogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCiB7CiAgICAg
cmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApLmdldCgpOwpAQCAtMjI5LDExICsxMzUsMTEgQEAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgp
IHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMu
c2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKICAgICAgICAgY2FjaGVGcmFt
ZShpbmRleCwgMCk7CiAKLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2
ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKKyAgICBpZiAoIW1f
ZnJhbWVzW2luZGV4XS5zdWJzYW1wbGluZ0xldmVsKCkpCisgICAgICAgIHJldHVybiBtX2ZyYW1l
c1tpbmRleF0uaW1hZ2UoKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdl
QXRJbmRleChpbmRleCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUZyYW1lRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRnJhbWVEYXRhQ0cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjZmU0MGNkM2M3
M2I1OWU3ZjEzZjlmMDAzMzZhMzRlZDNlNWMyZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1lRGF0YUNHLmNwcApAQCAtMCww
ICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCisKKyNpZiBV
U0UoQ0cpCisKKyNpbmNsdWRlICJDb3JlR3JhcGhpY3NTUEkuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEltYWdlRnJhbWVEYXRhOjpjbGVhckltYWdlKCkKK3sK
KyAgICBpZiAoIWhhc0ltYWdlKCkpCisgICAgICAgIHJldHVybjsKKyNpZiBDQUNIRV9TVUJJTUFH
RVMKKyAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ltYWdlLmdldCgpKTsKKyNlbmRp
ZgorICAgIG1faW1hZ2UgPSBudWxscHRyOworfQorCitJbnRTaXplIEltYWdlRnJhbWVEYXRhOjpp
bWFnZVNpemUoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKK3sKKyAgICByZXR1
cm4gaW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA6IEludFNpemUoKTsKK30KKyAgICAKK2Jvb2wgSW1hZ2VG
cmFtZURhdGE6OmltYWdlQWxwaGEoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JikKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKyAgICAKK0NvbG9yIEltYWdlRnJhbWVEYXRhOjppbWFnZVNvbGlk
Q29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKK3sKKyAgICB1bnNpZ25l
ZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0
bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4
LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAorICAgICAgICBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOworCisgICAg
aWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIEdyYXBo
aWNzQ29udGV4dChiaXRtYXBDb250ZXh0LmdldCgpKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlQ29weSk7CisgICAgQ0dSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IENHUmVjdE1ha2UoMCwg
MCwgMSwgMSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIGRl
c3RpbmF0aW9uUmVjdCwgaW1hZ2UuZ2V0KCkpOworICAgIGlmICghcGl4ZWxbM10pCisgICAgICAg
IHJldHVybiBDb2xvcigwLCAwLCAwLCAwKTsKKworICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAq
IDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1
NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Cit9CisgICAgCit9CisKKyNlbmRpZiAvLyBVU0UoQ0cp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276549</attachid>
            <date>2016-04-15 23:04:41 -0700</date>
            <delta_ts>2016-04-15 23:16:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160415230456.patch</filename>
            <type>text/plain</type>
            <size>53607</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFjMDM1MTAyMjA1NjUz
NjljOGM5MzkxOTllY2EyYzJhMWZhNGZjZS4uMTgwMGRkMjM2NjI0OWVlYjk1NTVkNGVlN2QyOTZk
ZjZjNGJlZGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE2LTA0LTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgUmVuYW1l
IEZyYW1lRGF0YSB0byBJbWFnZUZyYW1lRGF0YSBhbmQgbW92ZSBpdCB0byBhIHNlcGFyYXRlIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ0
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzdGF0dXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmlzQ29tcGxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6OmZyYW1lQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURh
dGE6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpvcmllbnRhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3Vic2FtcGxpbmdMZXZlbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZHVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpoYXNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6aGFzTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZURhdGFBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VGcmFtZURhdGFDYWlyby5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aW1hZ2VBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6aW1hZ2VTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRt
YXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2Fs
ZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENv
bG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1l
RGF0YUNHLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xl
YXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZUFscGhhKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZVNvbGlkQ29sb3IpOgorCiAyMDE2LTA0LTE1
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2FsbGluZyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjo6YW5pbWF0aW9uRW5kZWQoKSB3aWxs
IGNyYXNoIGlmIHRoZSBTVkcgcHJvcGVydHkgaXMgbm90IGFuaW1hdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA1ZTYyMWVmYmY0NjY4OGM0ZTVjOTJhZTk1NmE1NTdiODliNTkxZTdkLi5kMzNl
NGJiMzczNjQxMmQ2MDRkZWY3ZGFkMGRhMDY4Y2Y4MjIzNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjIxMyw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0lTT1ZUVEN1ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVu
dGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKaW5kZXggNWZmOTkxZmY3ZGEzMDhiYjkxODJlY2UzYmYxMjE3MzBhNTQ4ZDI4Ny4uMWU3
NzJkNDkwOWNlN2FiZmIyMjQ4NDg4ZDY4NGEwYWNiOTUwMDg4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC02OCw2ICs2OCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VG
cmFtZURhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2lu
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCA4N2E5MWQwNTRhZWU5ODUyMGRiYjllNGY2NzQzNmFmZjcwNmFmM2JkLi41ODA5OThiNmJmOWZi
YmIyYTY4ZmE0Zjc2Njk0OTNiMmExNWJmNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMTMyLDYgKzEzMiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUZyYW1lRGF0YUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ludFJlY3RD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA5NTA4Y2U0ZWY5NmE0ZjAwMjVlMDRhYzUyOWIyYWMxOTVhNjBjMmYzLi45
YTVlNDJjZTRiOGY2MjBkZmRjNjc1NmM5ZGRiYzg1Y2Y4NWQ4YzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtMTA0LDYgKzEwNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUZyYW1lRGF0YUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ludFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fp
cm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBhZWEzNTcxMDU5MDliN2M3ZWUyMDU1Mjc1OWVhYzk5
ZjQ1NmQ1YTAwLi4yM2FkM2MzMTRiZjM2MzJhMWQ1N2Y3MzNhZmU3ODY5MDdlMmQ4NmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDA2LDYgKzQwNiw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VGcmFtZURhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5D
YWlyby5jbWFrZQppbmRleCAyYzU1M2IwNTUxZGFkNjlhYTE5OWQ5NjBmNTUyMzQzZDkyMGYwN2Iz
Li5jZmE3MmVjZjM2YjQ2MzQzZjVlOTAzYzIyYjNkZDIzZmI5MzdiMzdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKQEAgLTMwLDYgKzMwLDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRnJhbWVEYXRhQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW50UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fp
cm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGRlYTQ3YzM2M2VlZmY3MGY0NzUyOThjODNiNDM2MTEwMjQ2YjE5OC4uZjE4
Njk5MDBlNTFkMGRlMzIyYmE5ZDdlNWZjMzgyNzMyOGQzYmRjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjI2OCwxMCArMjI2
OCwxMyBAQAogCQk1M0VEM0ZERjE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdz
R2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0VEM0ZERDE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmggKi87IH07CiAJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkEx
NjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTUzRUY3NjZDMTY1
MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkExNjUzMEE2MTAw
NENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CisJCTU1MDEzRUQ5MUNDMUFDODMwMEQ0
NTFFMiAvKiBJbWFnZUZyYW1lRGF0YUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1MDEzRUQ4MUNDMUFDODMwMEQ0NTFFMiAvKiBJbWFnZUZyYW1l
RGF0YUNHLmNwcCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1
NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3
RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3
RUQxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyog
SW1hZ2VEZWNvZGVyQ0cuaCAqLzsgfTsKKwkJNTU3RDYwNzAxQ0MxN0M2RjAwREQxMjkxIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1N0Q2MDZFMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1N0Q2MDcxMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU3RDYwNkYxQ0MxN0M2
RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4MDM3MTYxMUE2NkYwMEEwMEJB
RjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovOyB9
OwpAQCAtOTg0OCwxMCArOTg1MSwxMyBAQAogCQk1M0VEM0ZEQzE2N0E4OEU3MDA2NzYyRTYgLyog
SlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzRUQzRkREMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFs
U2V0dGluZ3NHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJ
bnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5nc01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1NTAxM0VEODFDQzFBQzgzMDBENDUxRTIgLyogSW1hZ2VGcmFtZURhdGFD
Ry5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lRGF0
YUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAw
NzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTVCODdFQTFD
QUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU3RDYwNkUxQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdl
RnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
RnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU3RDYwNkYxQ0Mx
N0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGlj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyog
U2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4MTAs
NiArMjE4MTYsNyBAQAogCQkJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNw
cCAqLywKIAkJCQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3Bw
ICovLAogCQkJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICov
LAorCQkJCTU1MDEzRUQ4MUNDMUFDODMwMEQ0NTFFMiAvKiBJbWFnZUZyYW1lRGF0YUNHLmNwcCAq
LywKIAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovLAog
CQkJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovLAog
CQkJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLywKQEAgLTIx
OTcxLDYgKzIxOTc4LDggQEAKIAkJCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VC
dWZmZXIuY3BwICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZl
ci5oICovLAogCQkJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEu
aCAqLywKKwkJCQk1NTdENjA2RTFDQzE3QzZGMDBERDEyOTEgLyogSW1hZ2VGcmFtZURhdGEuY3Bw
ICovLAorCQkJCTU1N0Q2MDZGMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5oICov
LAogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8sCiAJ
CQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovLAog
CQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCkBA
IC0yNjgwMyw2ICsyNjgxMiw3IEBACiAJCQkJMDc2MzA2RTExN0UxNjA4OTAwNUE3QzRFIC8qIEpT
U291cmNlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE3RkVFQUQxNkE0RTc0QjAwNEMwQzMz
IC8qIEpTU3BlZWNoU3ludGhlc2lzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTJBNUFEMjE2QTQ4
NjBBMDA5NzZBMjUgLyogSlNTcGVlY2hTeW50aGVzaXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU3RDYwNzExQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBQTdGRUVBNzE2QTRFNkYzMDA0QzBDMzMgLyogSlNTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBN0ZFRUE5MTZBNEU2RjMwMDRDMEMzMyAv
KiBKU1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgyNDMyOTBE
MENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDczOCw2
ICszMDc0OCw3IEBACiAJCQkJRTQ0NjE0MUEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxNjE4ODMyMkVCMDBDOTU0QjUgLyogSlNU
b3VjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxODE4ODMyMkVCMDBDOTU0QjUgLyog
SlNUb3VjaEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU1N0Q2MDcwMUNDMTdDNkYwMERE
MTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxQTE4
ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcw
MzM0RTkxNDVBMUYzNjAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMwODk0LDYgKzMwOTA1LDcgQEAKIAkJCQlGQUJFNzJGNjEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGQUJFNzJGODEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDVEOTEzQ0VFQUIyQTYwNTM0MjE4QUNGIC8qIE1hdGhNTE1lbmNs
b3NlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NTAxM0VEOTFDQzFBQzgzMDBENDUx
RTIgLyogSW1hZ2VGcmFtZURhdGFDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJGRTEw
NTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5
MDQ2REYxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRUQ0ODM5MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1MU2VsZWN0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA3Yzc4ZDM2NWMxYTQwMmU2ZWMxOTRiNzcy
ZjU1YTllZGJkNmNkZTMzLi5lZGYwMDMzMTE3NmUxM2U1NjU1Y2QyMDYxODhhZGRmMDU1OTdmMjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCkBAIC02MCw4ICs2MCw2IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlcikKICAgICAsIG1fcHJvZ3Jlc3NpdmVMb2FkQ2h1bmtUaW1lKDApCiAgICAg
LCBtX3Byb2dyZXNzaXZlTG9hZENodW5rQ291bnQoMCkKICNlbmRpZgotICAgICwgbV9pc1NvbGlk
Q29sb3IoZmFsc2UpCi0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQogICAgICwg
bV9hbmltYXRpb25GaW5pc2hlZChmYWxzZSkKICAgICAsIG1fYWxsRGF0YVJlY2VpdmVkKGZhbHNl
KQogICAgICwgbV9oYXZlU2l6ZShmYWxzZSkKQEAgLTcxLDYgKzY5LDMyIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fYW5pbWF0aW9u
RmluaXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKIH0KKyAgICAKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKKyAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9jdXJyZW50RnJhbWUoMCkKKyAgICAs
IG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQorICAgICwgbV9yZXBldGl0aW9uQ291
bnRTdGF0dXMoVW5rbm93bikKKyAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQorICAgICwg
bV9kZWNvZGVkU2l6ZSgwKQorICAgICwgbV9kZWNvZGVkUHJvcGVydGllc1NpemUoMCkKKyAgICAs
IG1fZnJhbWVDb3VudCgxKQorICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQorICAgICwg
bV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKKyAgICAsIG1faGF2ZVNpemUodHJ1ZSkKKyAgICAsIG1f
c2l6ZUF2YWlsYWJsZSh0cnVlKQorICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQoreworICAg
IG1fZnJhbWVzLmdyb3coMSk7CisgICAgbV9mcmFtZXNbMF0gPSBJbWFnZUZyYW1lRGF0YShpbWFn
ZSk7CisgICAgCisgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgorICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KKyAgICBtX3NpemUgPSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX2ZyYW1lc1sw
XS5zaXplKCk7CisgICAgbV9kZWNvZGVkU2l6ZSA9IG1fZnJhbWVzWzBdLmZyYW1lQnl0ZXMoKTsK
KyAgICAKKyAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKK30KIAogQml0bWFwSW1hZ2U6On5CaXRt
YXBJbWFnZSgpCiB7CkBAIC05OCw3ICsxMjIsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5z
aXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRl
eF0ubV9pbWFnZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmltYWdlKCk7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTExOCw4
ICsxNDIsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsKQogICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBmcmFtZSBpc24ndCBhY3R1YWxseSBj
aGFuZ2luZyAod2UncmUganVzdCB0cnlpbmcgdG8KICAgICAgICAgLy8gc2F2ZSB0aGUgbWVtb3J5
IGZvciB0aGUgZnJhbWVidWZmZXIgZGF0YSksIHNvIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIKICAg
ICAgICAgLy8gdGhlIG1ldGFkYXRhLgotICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9m
cmFtZXNbaV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoZmFs
c2UpKQorICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9mcmFtZXNbaV0uZnJhbWVCeXRl
cygpOworICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoQ2FjaGVNZXRhZGF0YSkpCiAgICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOwogICAgIH0KIApAQCAtMTQ0
LDcgKzE2OCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNz
YXJ5KGJvb2wgZGVzdHJveUFsbCkKIAogICAgIHVuc2lnbmVkIGFsbEZyYW1lQnl0ZXMgPSAwOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IGFsbEZyYW1lQnl0ZXMgKz0gbV9mcmFtZXNbaV0ubV9mcmFtZUJ5dGVzOworICAgICAgICBhbGxG
cmFtZUJ5dGVzICs9IG1fZnJhbWVzW2ldLmZyYW1lQnl0ZXMoKTsKIAogICAgIGlmIChhbGxGcmFt
ZUJ5dGVzID4gbGFyZ2VBbmltYXRpb25DdXRvZmYpCiAgICAgICAgIGRlc3Ryb3lEZWNvZGVkRGF0
YShkZXN0cm95QWxsKTsKQEAgLTE1Miw4ICsxNzYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwpCiAKIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeSh1bnNpZ25lZCBmcmFtZUJ5dGVzQ2xlYXJl
ZCwgQ2xlYXJlZFNvdXJjZSBjbGVhcmVkU291cmNlKQogewotICAgIG1faXNTb2xpZENvbG9yID0g
ZmFsc2U7Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IGZhbHNlOworICAgIG1fc29saWRD
b2xvciA9IE51bGxvcHQ7CiAgICAgaW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogCiAgICAgQVNT
RVJUKG1fZGVjb2RlZFNpemUgPj0gZnJhbWVCeXRlc0NsZWFyZWQpOwpAQCAtMTc3LDI5ICsyMDAs
MTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwg
bnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBpZiAo
ZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1l
c1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxp
bmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAm
JiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgICAgIGNoZWNrRm9yU29saWRDb2xv
cigpOwotICAgIH0KLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0aW9uID0gbV9zb3Vy
Y2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXZl
TWV0YWRhdGEgPSB0cnVlOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2lzQ29tcGxldGUgPSBtX3Nv
dXJjZS5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKLQotICAgIGlmIChyZXBldGl0aW9u
Q291bnQoZmFsc2UpICE9IGNBbmltYXRpb25Ob25lKQotICAgICAgICBtX2ZyYW1lc1tpbmRleF0u
bV9kdXJhdGlvbiA9IG1fc291cmNlLmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKLQotICAg
IG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoaW5kZXgpOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5m
cmFtZUJ5dGVzQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBjb25zdCBJ
bnRTaXplIGZyYW1lU2l6ZShpbmRleCA/IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpIDogbV9zaXplKTsKLSAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwg
JiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKKyAgICBtX2ZyYW1lc1tpbmRleF0gPSBtX3NvdXJjZS5j
cmVhdGVGcmFtZURhdGFBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBmcmFtZUNhY2hp
bmcpOworICAgIAorICAgIGlmIChpbmRleCAmJiBtX2ZyYW1lc1tpbmRleF0uc2l6ZSgpICE9IG1f
c2l6ZSkKICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7CiAKLSAgICBpZiAo
bV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKLSAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZl
Q2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOworICAgIGlmIChtX2ZyYW1l
c1tpbmRleF0uaGFzSW1hZ2UoKSkgeworICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0
PGludD4obV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSk7CiAgICAgICAgIG1fZGVjb2RlZFNp
emUgKz0gZGVsdGFCeXRlczsKICAgICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2ls
bCBzdWJzdW1lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVzZWQKICAgICAgICAgLy8gdG8g
ZGV0ZXJtaW5lIGltYWdlIHByb3BlcnRpZXMuCkBAIC0yODgsMTcgKzI5NSwxNiBAQCBib29sIEJp
dG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8g
Tk9URTogRG9uJ3QgY2FsbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxs
IHRyeSB0bwogICAgICAgICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29k
ZWQgb3IKICAgICAgICAgLy8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAg
ICAgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAg
ICAgICAgaWYgKG1fZnJhbWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lz
Q29tcGxldGUpCi0gICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0u
Y2xlYXIodHJ1ZSkgPyBmcmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChtX2ZyYW1lc1tpXS5o
YXNNZXRhZGF0YSgpICYmICFtX2ZyYW1lc1tpXS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAgICBm
cmFtZUJ5dGVzQ2xlYXJlZCArPSBtX2ZyYW1lc1tpXS5jbGVhcihDYWNoZU5vbmUpOwogICAgIH0K
ICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRT
b3VyY2U6Ok5vKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBm
b3IgaU9TPwogICAgIGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1w
dHkoKSkgewotICAgICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAx
XS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAx
XS5jbGVhcih0cnVlKSkgeworICAgICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5z
aXplKCkgLSAxXS5mcmFtZUJ5dGVzKCk7CisgICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5z
aXplKCkgLSAxXS5jbGVhcihDYWNoZU5vbmUpKSB7CiAgICAgICAgICAgICBkZWx0YUJ5dGVzICs9
IGJ5dGVzOwogICAgICAgICAgICAgZGVsdGFCeXRlcyArPSBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6
ZTsKICAgICAgICAgICAgIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplID0gMDsKQEAgLTM2OCw4ICsz
NzQsOCBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRl
eCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hp
bmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkK
LSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFt
ZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBD
YWNoZU1ldGFkYXRhQW5kSW1hZ2UgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAg
ICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4
XS5oYXNNZXRhZGF0YSgpKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNo
aW5nKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzg0LDEwICszOTAsOSBAQCBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBw
cmVzZW50YXRpb25TYwogCiAgICAgLy8gV2UgbWF5IGhhdmUgY2FjaGVkIGEgZnJhbWUgd2l0aCBh
IGhpZ2hlciBzdWJzYW1wbGluZyBsZXZlbCwgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkIHRvCiAgICAg
Ly8gcmUtZGVjb2RlIHdpdGggYSBsb3dlciBsZXZlbC4KLSAgICBpZiAoaW5kZXggPCBtX2ZyYW1l
cy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgJiYgc3Vic2FtcGxpbmdMZXZlbCA8
IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKKyAgICBpZiAoaW5kZXggPCBt
X2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdlKCkgJiYgc3Vic2FtcGxp
bmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5zdWJzYW1wbGluZ0xldmVsKCkpIHsKICAgICAgICAg
Ly8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2FjaGVkLCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6
ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24uCi0gICAgICAgIGludCBzaXplQ2hhbmdlID0g
LW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5j
bGVhcih0cnVlKTsKKyAgICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLmNs
ZWFyKENhY2hlTm9uZSk7CiAgICAgICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKICAgICAg
ICAgbV9kZWNvZGVkU2l6ZSArPSBzaXplQ2hhbmdlOwogICAgICAgICBpZiAoaW1hZ2VPYnNlcnZl
cigpKQpAQCAtMzk1LDI2ICs0MDAsMjYgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2MKICAgICB9
CiAKICAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBmcmFtZSB5ZXQsIGRvIHNvLgotICAg
IGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
KQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBDYWNoZU1ldGFk
YXRhQW5kRnJhbWUpOworICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJh
bWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5kSW1hZ2UpOwogCi0gICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKIH0K
IAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgp
CiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25s
eSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2lz
Q29tcGxldGU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pc0NvbXBsZXRlKCk7CiB9CiAK
IGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkp
CisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247
CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5kdXJhdGlvbigpOwogfQogCiBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQpAQCAtNDI0LDEx
ICs0MjksMTEgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkKIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6
ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVN
ZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVN
ZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4
XS5tX2hhdmVNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2hhc0Fs
cGhhOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0
dXJuIG1fZnJhbWVzW2luZGV4XS5oYXNBbHBoYSgpOwogCiAgICAgcmV0dXJuIG1fc291cmNlLmZy
YW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKIH0KQEAgLTQ0MCwxMSArNDQ1LDExIEBAIGJvb2wg
Qml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiAKIEltYWdlT3JpZW50
YXRpb24gQml0bWFwSW1hZ2U6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5
KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGEpKQog
ICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOwogCi0gICAgaWYgKG1fZnJhbWVzW2lu
ZGV4XS5tX2hhdmVNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX29y
aWVudGF0aW9uOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkKKyAgICAg
ICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5vcmllbnRhdGlvbigpOwogCiAgICAgcmV0dXJuIG1f
c291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CiB9CkBAIC02NjcsMTkgKzY3Miw0MCBA
QCBib29sIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oQW5pbWF0aW9uQWR2
YW5jZW1lbnQgYWR2YW5jZW1lbnQpCiAKICAgICByZXR1cm4gYWR2YW5jZWRBbmltYXRpb247CiB9
CisgICAgCit2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQoreworICAgIG1f
c29saWRDb2xvciA9IENvbG9yKCk7CisgICAgCisgICAgaWYgKGZyYW1lQ291bnQoKSAhPSAxKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIShlbnN1cmVGcmFtZUlzQ2FjaGVkKDAsIENhY2hl
TWV0YWRhdGEpICYmIG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1swXS5oYXNNZXRhZGF0YSgp
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZnJhbWVzWzBdLnNpemUoKSAhPSBJbnRT
aXplKDEsIDEpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIShlbnN1cmVGcmFtZUlzQ2Fj
aGVkKDAsIENhY2hlTWV0YWRhdGFBbmRJbWFnZSkgJiYgbV9mcmFtZXNbMF0uaGFzSW1hZ2UoKSkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fc29saWRDb2xvciA9IG1fZnJhbWVzWzBdLnNvbGlk
Q29sb3IoKTsKK30KIAogYm9vbCBCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKCkK
IHsKLSAgICBpZiAoIW1fY2hlY2tlZEZvclNvbGlkQ29sb3IgJiYgZnJhbWVDb3VudCgpID4gMCkg
eworICAgIGlmIChmcmFtZUNvdW50KCkgIT0gMSB8fCBtX2N1cnJlbnRGcmFtZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghbV9zb2xpZENvbG9yKQogICAgICAgICBjaGVj
a0ZvclNvbGlkQ29sb3IoKTsKLSAgICAgICAgQVNTRVJUKG1fY2hlY2tlZEZvclNvbGlkQ29sb3Ip
OwotICAgIH0KLSAgICByZXR1cm4gbV9pc1NvbGlkQ29sb3IgJiYgIW1fY3VycmVudEZyYW1lOwor
ICAgIAorICAgIHJldHVybiBzb2xpZENvbG9yKCkuaXNWYWxpZCgpOwogfQogCiBDb2xvciBCaXRt
YXBJbWFnZTo6c29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc29saWRDb2xvcjsK
KyAgICByZXR1cm4gbV9zb2xpZENvbG9yID8gbV9zb2xpZENvbG9yLnZhbHVlKCkgOiBDb2xvcigp
OwogfQogICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpCkBAIC02OTksOCArNzI1
LDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50LWZyYW1lIiwgbV9jdXJyZW50RnJhbWUpOwogICAg
IH0KICAgICAKLSAgICBpZiAobV9pc1NvbGlkQ29sb3IpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgic29saWQtY29sb3IiLCBtX2lzU29saWRDb2xvcik7CisgICAgaWYgKG1fc29saWRDb2xvcikK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzb2xpZC1jb2xvciIsIG1fc29saWRDb2xvci52YWx1
ZSgpKTsKICAgICAKICAgICBtX3NvdXJjZS5kdW1wKHRzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDdjOGVjYWNmYzZjNjFjOTQ0
NGQ2MWFkZDRlMjc5NzZjYjIwMjFkNTAuLmViYTMzN2FiZDk0YzQzZTk3NmNmNmNhMzhlZjE1ZTI1
NWMxYmMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMjgsOCArMjgsOSBAQAogI2lmbmRlZiBCaXRtYXBJbWFnZV9oCiAjZGVmaW5l
IEJpdG1hcEltYWdlX2gKIAotI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIK
KyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVk
ZSAiSW50U2l6ZS5oIgpAQCAtNjAsNDYgKzYxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBUaW1lcjsKIAotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0vLyBGcmFtZURhdGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsKLXB1YmxpYzoK
LSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3Jp
ZW50YXRpb24pCi0gICAgICAgICwgbV9zdWJzYW1wbGluZ0xldmVsKDApCi0gICAgICAgICwgbV9k
dXJhdGlvbigwKQotICAgICAgICAsIG1faGF2ZU1ldGFkYXRhKGZhbHNlKQotICAgICAgICAsIG1f
aXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRydWUpCi0gICAgICAgICwg
bV9mcmFtZUJ5dGVzKDApCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsg
Ci0gICAgICAgIGNsZWFyKHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQg
aW1hZ2UgZGF0YSBvbiB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgot
ICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xl
YXIuCi0gICAgYm9vbCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotCi0gICAgTmF0aXZlSW1h
Z2VQdHIgbV9pbWFnZTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247Ci0gICAg
U3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgZmxvYXQgbV9kdXJhdGlv
bjsKLSAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKLSAgICBib29sIG1faXNDb21wbGV0ZSA6
IDE7Ci0gICAgYm9vbCBtX2hhc0FscGhhIDogMTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lQnl0ZXM7
Ci19OwotCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0vLyBCaXRtYXBJbWFnZSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotCiBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1Ymxp
YyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBj
bGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTsKQEAgLTIyMSwxMSArMTgyLDEwIEBAIHByb3Rl
Y3RlZDoKICAgICBJbWFnZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVf
dCk7CiAKICAgICAvLyBEZWNvZGVzIGFuZCBjYWNoZXMgYSBmcmFtZS4gTmV2ZXIgYWNjZXNzZWQg
ZXhjZXB0IGludGVybmFsbHkuCi0gICAgZW51bSBJbWFnZUZyYW1lQ2FjaGluZyB7IENhY2hlTWV0
YWRhdGFPbmx5LCBDYWNoZU1ldGFkYXRhQW5kRnJhbWUgfTsKLSAgICB2b2lkIGNhY2hlRnJhbWUo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hl
TWV0YWRhdGFBbmRGcmFtZSk7CisgICAgdm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kSW1hZ2Up
OwogCiAgICAgLy8gQ2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBp
bmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJldHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5k
cy4KLSAgICBib29sIGVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1l
Q2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlz
Q2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5k
SW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4g
fGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFt
ZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0y
NzIsOCArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0ZVBsYXRmb3JtRGF0
YSgpOwogCiAgICAgLy8gQ2hlY2tzIHRvIHNlZSBpZiB0aGUgaW1hZ2UgaXMgYSAxeDEgc29saWQg
Y29sb3IuIFdlIG9wdGltaXplIHRoZXNlIGltYWdlcyBhbmQganVzdCBkbyBhIGZpbGwgcmVjdCBp
bnN0ZWFkLgotICAgIC8vIFRoaXMgY2hlY2sgc2hvdWxkIGhhcHBlbiByZWdhcmRsZXNzIHdoZXRo
ZXIgbV9jaGVja2VkRm9yU29saWRDb2xvciBpcyBhbHJlYWR5IHNldCwgYXMgdGhlIGZyYW1lIG1h
eSBoYXZlCi0gICAgLy8gY2hhbmdlZC4KKyAgICAvLyBUaGlzIGNoZWNrIHNob3VsZCBoYXBwZW4g
cmVnYXJkbGVzcyB3aGV0aGVyIG1fc29saWRDb2xvciBpcyBhbHJlYWR5IHNldCwgYXMgdGhlIGZy
YW1lIG1heSBoYXZlIGNoYW5nZWQuCiAgICAgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKTsKIAog
ICAgIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgb3ZlcnJpZGU7CkBAIC0yOTQsNyArMjUz
LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGluZ09yaWVu
dGF0aW9uOwogCiAgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lOyAvLyBUaGUgaW5kZXggb2YgdGhl
IGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgotICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+IG1f
ZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9u
LiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgorICAgIFZl
Y3RvcjxJbWFnZUZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNo
ZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4g
dGhlbSBpbiB0aGUgY2FjaGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJhbWVU
aW1lcjsKICAgICBpbnQgbV9yZXBldGl0aW9uQ291bnQ7IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1h
dGlvbiBsb29wcyB3ZSBzaG91bGQgZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0
aGlzIGltYWdlIHR5cGUgaXMgaW5jYXBhYmxlIG9mIGFuaW1hdGlvbi4KQEAgLTMwOSw3ICsyNjgs
NyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmV0YWluUHRyPENGRGF0YVJlZj4gbV90aWZmUmVw
OyAvLyBDYWNoZWQgVElGRiByZXAgZm9yIGZyYW1lIDAuIE9ubHkgYnVpbHQgbGF6aWx5IGlmIHNv
bWVvbmUgcXVlcmllcyBmb3Igb25lLgogI2VuZGlmCiAKLSAgICBDb2xvciBtX3NvbGlkQ29sb3I7
ICAvLyBJZiB3ZSdyZSBhIDF4MSBzb2xpZCBjb2xvciwgdGhpcyBpcyB0aGUgY29sb3IgdG8gdXNl
IHRvIGZpbGwuCisgICAgT3B0aW9uYWw8Q29sb3I+IG1fc29saWRDb2xvcjsgLy8gSWYgd2UncmUg
YSAxeDEgc29saWQgY29sb3IsIHRoaXMgaXMgdGhlIGNvbG9yIHRvIHVzZSB0byBmaWxsLgogCiAg
ICAgdW5zaWduZWQgbV9kZWNvZGVkU2l6ZTsgLy8gVGhlIGN1cnJlbnQgc2l6ZSBvZiBhbGwgZGVj
b2RlZCBmcmFtZXMuCiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6
ZTsgLy8gVGhlIHNpemUgb2YgZGF0YSBkZWNvZGVkIGJ5IHRoZSBzb3VyY2UgdG8gZGV0ZXJtaW5l
IGltYWdlIHByb3BlcnRpZXMgKGUuZy4gc2l6ZSwgZnJhbWUgY291bnQsIGV0YykuCkBAIC0zMjAs
OSArMjc5LDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9wcm9ncmVzc2l2ZUxvYWRDaHVua1Rp
bWU7CiAgICAgdWludDE2X3QgbV9wcm9ncmVzc2l2ZUxvYWRDaHVua0NvdW50OwogI2VuZGlmCi0g
ICAgYm9vbCBtX2lzU29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBhIDF4
MSBzb2xpZCBpbWFnZS4KLSAgICBib29sIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgOiAxOyAvLyBX
aGV0aGVyIHdlJ3ZlIGNoZWNrZWQgdGhlIGZyYW1lIGZvciBzb2xpZCBjb2xvci4KLQogICAgIGJv
b2wgbV9hbmltYXRpb25GaW5pc2hlZCA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlJ3ZlIGNvbXBs
ZXRlZCB0aGUgZW50aXJlIGFuaW1hdGlvbi4KIAogICAgIGJvb2wgbV9hbGxEYXRhUmVjZWl2ZWQg
OiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSd2ZSByZWNlaXZlZCBhbGwgb3VyIGRhdGEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTZlODZhMTc2MjIyODVmYzc0MDIzYWE1NjVlNDkyMmJlNGU4OTM4MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWVEYXRhLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUZy
YW1lRGF0YS5oIgorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCisj
ZWxzZQorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YSgpCit7Cit9CisKK0lt
YWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
CisgICAgOiBtX3N0YXR1cyhGcmFtZUNvbXBsZXRlKQorICAgICwgbV9zaXplKEltYWdlRnJhbWVE
YXRhOjppbWFnZVNpemUoaW1hZ2UpKQorICAgICwgbV9pbWFnZShpbWFnZSkKKyAgICAsIG1faGFz
QWxwaGEoSW1hZ2VGcmFtZURhdGE6OmltYWdlQWxwaGEoaW1hZ2UpKQoreworfQorCitJbWFnZUZy
YW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoY29uc3QgSW1hZ2VEZWNvZGVyJiBkZWNvZGVyLCBzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNh
Y2hpbmcgZnJhbWVDYWNoaW5nKQoreworICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgJiBDYWNoZU1l
dGFkYXRhKTsKKworICAgIGlmIChmcmFtZUNhY2hpbmcgJiBDYWNoZUltYWdlKSB7CisgICAgICAg
IG1faW1hZ2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKTsKKyAgICAgICAgbV9zdWJzYW1wbGluZ0xldmVsID0gc3Vic2FtcGxpbmdMZXZl
bDsKKyAgICB9CisKKyAgICBpZiAoZnJhbWVDYWNoaW5nICYgQ2FjaGVNZXRhZGF0YSkgeworICAg
ICAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwor
ICAgICAgICBtX3N0YXR1cyA9IGRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkg
PyBGcmFtZUNvbXBsZXRlIDogRnJhbWVQYXJ0aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRl
Y29kZXIucmVwZXRpdGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBt
X2R1cmF0aW9uID0gZGVjb2Rlci5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisKKyAgICAg
ICAgbV9oYXNBbHBoYSA9IGRlY29kZXIuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAg
ICAgICBtX3NpemUgPSBkZWNvZGVyLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5n
TGV2ZWwpOworICAgIH0KK30KKworSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7
CisgICAgY2xlYXJJbWFnZSgpOworfQorCit1bnNpZ25lZCBJbWFnZUZyYW1lRGF0YTo6Y2xlYXIo
SW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQoreworICAgIEFTU0VSVCghKGZyYW1lQ2Fj
aGluZyAmIENhY2hlSW1hZ2UpKTsKKworICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5m
cmFtZUJ5dGVzKCk7CisKKyAgICBjbGVhckltYWdlKCk7CisKKyAgICBpZiAoZnJhbWVDYWNoaW5n
ID09IENhY2hlTm9uZSkKKyAgICAgICAgKnRoaXMgPSBJbWFnZUZyYW1lRGF0YSgpOworCisgICAg
cmV0dXJuIGZyYW1lQnl0ZXM7Cit9CisgICAgCitDb2xvciBJbWFnZUZyYW1lRGF0YTo6c29saWRD
b2xvcigpIGNvbnN0Cit7CisgICAgaWYgKG1fc2l6ZSAhPSBJbnRTaXplKDEsIDEpIHx8ICFoYXNJ
bWFnZSgpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gSW1hZ2VG
cmFtZURhdGE6OmltYWdlU29saWRDb2xvcihtX2ltYWdlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmYzYmQ2Mjg3OTQ3OGY3MmNmZWE0NWQ2NDdkNGM2ZGZiZjU0Mzg3NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBJbWFnZUZyYW1lRGF0YV9oCisjZGVmaW5lIEltYWdlRnJhbWVEYXRhX2gK
KworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2lu
Y2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisvLyBTdWJzYW1w
bGluZ0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBl
YWNoIGF4aXMgZXRjLgordHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOworCitjb25zdCBT
dWJzYW1wbGluZ0xldmVsIE1pblN1YnNhbXBsaW5nTGV2ZWwgPSAwOworY29uc3QgU3Vic2FtcGxp
bmdMZXZlbCBNYXhTdWJzYW1wbGluZ0xldmVsID0gMzsKK2NvbnN0IFN1YnNhbXBsaW5nTGV2ZWwg
RGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwgPSBNaW5TdWJzYW1wbGluZ0xldmVsOworCitlbnVtIElt
YWdlRnJhbWVDYWNoaW5nIHsKKyAgICBDYWNoZU5vbmUsCisgICAgQ2FjaGVNZXRhZGF0YSwKKyAg
ICBDYWNoZUltYWdlLAorICAgIENhY2hlTWV0YWRhdGFBbmRJbWFnZQorfTsKKworZW51bSBJbWFn
ZUZyYW1lU3RhdHVzIHsKKyAgICBGcmFtZUVtcHR5LAorICAgIEZyYW1lUGFydGlhbCwKKyAgICBG
cmFtZUNvbXBsZXRlCit9OworCitjbGFzcyBJbWFnZURlY29kZXI7CisKK2NsYXNzIEltYWdlRnJh
bWVEYXRhIHsKK3B1YmxpYzoKKyAgICBJbWFnZUZyYW1lRGF0YSgpOworICAgIEltYWdlRnJhbWVE
YXRhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgSW1hZ2VGcmFtZURhdGEoY29uc3QgSW1h
Z2VEZWNvZGVyJiwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVsdFN1YnNh
bXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEltYWdlKTsK
KyAgICAKKyAgICB+SW1hZ2VGcmFtZURhdGEoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjbGVhcihJ
bWFnZUZyYW1lQ2FjaGluZyk7CisgICAgQ29sb3Igc29saWRDb2xvcigpIGNvbnN0OworICAgIAor
ICAgIEltYWdlRnJhbWVTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0K
KyAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBGcmFtZUNv
bXBsZXRlOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Cisg
ICAgdW5zaWduZWQgZnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3Np
emUuYXJlYSgpICogNCA6IDA7IH0KKyAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2U7IH0KKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2FtcGxpbmdMZXZlbDsgfQor
ICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQorICAgIAor
ICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2hhc0FscGhhOyB9CisgICAgYm9v
bCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICBib29sIGhhc01ldGFk
YXRhKCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZS5pc0VtcHR5KCk7IH0KKyAgICAKK3ByaXZhdGU6
CisgICAgdm9pZCBjbGVhckltYWdlKCk7CisgICAgCisgICAgc3RhdGljIEludFNpemUgaW1hZ2VT
aXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgc3RhdGljIGJvb2wgaW1hZ2VBbHBoYShj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOworICAgIHN0YXRpYyBDb2xvciBpbWFnZVNvbGlkQ29sb3Io
Y29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICAKKyAgICBJbWFnZUZyYW1lU3RhdHVzIG1fc3Rh
dHVzIHsgRnJhbWVFbXB0eSB9OworICAgIEludFNpemUgbV9zaXplOworICAgIE5hdGl2ZUltYWdl
UHRyIG1faW1hZ2U7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsg
RGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2Ft
cGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9OworICAgIGJvb2wg
bV9oYXNBbHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBJbWFnZUZyYW1l
RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKaW5kZXggN2VkOWZkMWQwNzY3OTNkZmY0ZGY3Y2QyM2Q3N2Y1ODFiOGRhYTI4Yi4uYzEw
OGNmMTExNTYyYzJlYTkyMjE1ODM2OGZhNjY0YTA2NzU0MzRkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjE0LDYgKzIxNCwx
MSBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldgogewogICAgIHJldHVybiBpbml0aWFsaXplZCgp
ID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdM
ZXZlbCkgOiBudWxscHRyOwogfQorICAgIAorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNy
ZWF0ZUZyYW1lRGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSA/IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsLCBmcmFtZUNhY2hpbmcpIDogSW1hZ2VGcmFtZURhdGEoKTsKK30KIAogdm9p
ZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGE4OTgwNzYxYjQ0
MTcyYTY4ODMzNWFiOTc5MGI4OTQ4ZDczMTAzZjkuLmFjMzYxZDc3N2UxMDIxZWQ5NGQ1ODc1YzZm
YTQyMzFiOTk3MWIxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBJbWFnZVNvdXJjZV9oCiAj
ZGVmaW5lIEltYWdlU291cmNlX2gKIAorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2VQdHIuaCIKQEAgLTYzLDkgKzY0LDYgQEAgY29uc3QgaW50IGNBbmltYXRp
b25Mb29wT25jZSA9IDA7CiBjb25zdCBpbnQgY0FuaW1hdGlvbkxvb3BJbmZpbml0ZSA9IC0xOwog
Y29uc3QgaW50IGNBbmltYXRpb25Ob25lID0gLTI7CiAKLS8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAg
aXMgbm8gc3Vic2FtcGxpbmcsIDEgaXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMu
Ci10eXBlZGVmIHNob3J0IFN1YnNhbXBsaW5nTGV2ZWw7Ci0KIGNsYXNzIEltYWdlU291cmNlIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZVNvdXJjZSk7CiAgICAgZnJpZW5kIGNsYXNz
IEJpdG1hcEltYWdlOwpAQCAtMTI5LDE4ICsxMjcsMTkgQEAgcHVibGljOgogICAgIGJvb2wgYWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgCiAgICAgLy8g
U2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNp
emVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OworICAgIElu
dFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0
U3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3Q7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1i
ZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQgZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0
CiAgICAgLy8gZGVjb2RlZCB0aGVuIHJldHVybiAwLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApIGNvbnN0OworICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJz
YW1wbGluZ0xldmVsKSBjb25zdDsKICAgICAKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QpOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVf
dCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KICAgICAKICAgICAvLyBDYWxsZXJz
IHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVy
IGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIE5hdGl2
ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IDApOworICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJbWFn
ZUZyYW1lRGF0YSBjcmVhdGVGcmFtZURhdGFBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0
YWRhdGFBbmRJbWFnZSk7CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCmluZGV4IDFmNGVlMjA3NjZjMTVk
Y2Q3ZTBhZTZjYmMwZDRiZDFjNzM0NTE2MDEuLmMyNDZjMmY1MzExMmZiZTYzMmJjZjk0ZGI2Yjli
N2QwMjUyNDJjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCkBAIC0zOCwzMSArMzgsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiYmIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
LSAgICA6IEltYWdlKG9ic2VydmVyKQotICAgICwgbV9zaXplKGNhaXJvU3VyZmFjZVNpemUobmF0
aXZlSW1hZ2UuZ2V0KCkpKQotICAgICwgbV9jdXJyZW50RnJhbWUoMCkKLSAgICAsIG1fcmVwZXRp
dGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQotICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMo
VW5rbm93bikKLSAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQotICAgICwgbV9kZWNvZGVk
U2l6ZShtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSAqIDQpCi0gICAgLCBtX2ZyYW1l
Q291bnQoMSkKLSAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVja2VkRm9y
U29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQodHJ1ZSkKLSAgICAs
IG1fYWxsRGF0YVJlY2VpdmVkKHRydWUpCi0gICAgLCBtX2hhdmVTaXplKHRydWUpCi0gICAgLCBt
X3NpemVBdmFpbGFibGUodHJ1ZSkKLSAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKLXsKLSAg
ICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSBjYWlyb19z
dXJmYWNlX2dldF9jb250ZW50KG5hdGl2ZUltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NP
TE9SOwotICAgIG1fZnJhbWVzWzBdLm1faW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKLSAg
ICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0KLSAgICBjaGVja0ZvclNvbGlk
Q29sb3IoKTsKLX0KLQogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQogewpAQCAtMTIxLDQ0ICs5Niw2IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdCwgY29uc3QgRmxvCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsK
IH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKLXsKLSAgICBtX2lz
U29saWRDb2xvciA9IGZhbHNlOwotICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVlOwot
Ci0gICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8g
c3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICBpZiAoIXN1
cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0Lgot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNl
LmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEludFNpemUgc2l6ZSA9IGNhaXJvU3VyZmFjZVNpemUoc3VyZmFjZS5nZXQoKSk7Ci0KLSAg
ICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB1bnNpZ25lZCogcGl4ZWxDb2xvciA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlLmdldCgpKSk7
Ci0gICAgbV9zb2xpZENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29s
b3IpOwotCi0gICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOwotfQotCi1ib29sIEZyYW1lRGF0YTo6
Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQotewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAg
ICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSAgICAg
ICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVT
RShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlRnJhbWVEYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VGcmFtZURhdGFDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUwNGNlN2Fl
ZjQ4OTlkODYyNTQzZmUwODJiMDUwYzU1NzU4ZmQwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRnJhbWVEYXRhQ2Fpcm8uY3Bw
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgi
CisKKyNpZiBVU0UoQ0FJUk8pCisKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSW1hZ2VGcmFtZURhdGE6OmNsZWFySW1hZ2UoKQorewor
ICAgIG1faW1hZ2UgPSBudWxscHRyOworfQorCitJbnRTaXplIEltYWdlRnJhbWVEYXRhOjppbWFn
ZVNpemUoY29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQoreworICAgIHJldHVy
biBpbWFnZSA/IGNhaXJvU3VyZmFjZVNpemUoaW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgpOworfQor
Citib29sIEltYWdlRnJhbWVEYXRhOjppbWFnZUFscGhhKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+JiBpbWFnZSkKK3sKKyAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChp
bWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKK30KKworQ29sb3IgSW1hZ2VGcmFt
ZURhdGE6OmltYWdlU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1h
Z2UpCit7CisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENB
SVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBJ
bnRTaXplIHNpemUgPSBjYWlyb1N1cmZhY2VTaXplKGltYWdlLmdldCgpKTsKKworICAgIGlmIChz
aXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCisgICAgICAgIHJldHVybiBD
b2xvcigpOworCisgICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSByZWludGVycHJldF9jYXN0X3B0
cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsK
KyAgICBtX3NvbGlkQ29sb3IgPSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWxDb2xv
cik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcElt
YWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1h
Z2VDRy5jcHAKaW5kZXggNjkzMmExMmZkZjhjMTE4ZGRiMjRjODkyN2NlYzVjZjFmZDY1ZWJiYS4u
NWYxYmJiNjcxMGZmZTYxOTA2YTNjM2Y5MzFlZGUxN2U2ZWJlYzdmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKQEAg
LTUwLDEwMCArNTAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRnJhbWVEYXRh
OjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0g
ICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBtX3N1YnNhbXBsaW5nTGV2ZWwg
PSAwOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICAgICAg
c3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7Ci0jZW5kaWYKLSAgICAg
ICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4mJiBpbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCi0gICAgOiBJbWFnZShv
YnNlcnZlcikKLSAgICAsIG1fY3VycmVudEZyYW1lKDApCi0gICAgLCBtX3JlcGV0aXRpb25Db3Vu
dChjQW5pbWF0aW9uTm9uZSkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzKFVua25vd24p
Ci0gICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKLSAgICAsIG1fZGVjb2RlZFNpemUoMCkK
LSAgICAsIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplKDApCi0gICAgLCBtX2ZyYW1lQ291bnQoMSkK
LSAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xv
cihmYWxzZSkKLSAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQodHJ1ZSkKLSAgICAsIG1fYWxsRGF0
YVJlY2VpdmVkKHRydWUpCi0gICAgLCBtX2hhdmVTaXplKHRydWUpCi0gICAgLCBtX3NpemVBdmFp
bGFibGUodHJ1ZSkKLSAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKLXsKLSAgICBDR0Zsb2F0
IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKTsKLSAgICBDR0Zsb2F0IGhlaWdo
dCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpOwotICAgIG1fZGVjb2RlZFNpemUgPSB3
aWR0aCAqIGhlaWdodCAqIDQ7Ci0gICAgbV9zaXplID0gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsK
LQotICAgIC8vIFNpbmNlIHdlIGRvbid0IGhhdmUgYSBkZWNvZGVyLCB3ZSBjYW4ndCBmaWd1cmUg
b3V0IHRoZSBpbWFnZSBvcmllbnRhdGlvbi4KLSAgICAvLyBTZXQgbV9zaXplUmVzcGVjdGluZ09y
aWVudGF0aW9uIHRvIGJlIHRoZSBzYW1lIGFzIG1fc2l6ZSBzbyBpdCdzIG5vdCAweDAuCi0gICAg
bV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXplOwotCi0gICAgbV9mcmFtZXMuZ3Jv
dygxKTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShpbWFnZSk7Ci0gICAgbV9m
cmFtZXNbMF0ubV9oYXNBbHBoYSA9IHRydWU7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRh
dGEgPSB0cnVlOwotCi0gICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7Ci19Ci0KLXZvaWQgQml0bWFw
SW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCi17Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xv
ciA9IHRydWU7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLQotICAgIGlmIChmcmFtZUNv
dW50KCkgPiAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWhhdmVGcmFtZUltYWdlQXRJ
bmRleCgwKSkgewotICAgICAgICBJbnRTaXplIHNpemUgPSBtX3NvdXJjZS5mcmFtZVNpemVBdElu
ZGV4KDAsIDApOwotICAgICAgICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQo
KSAhPSAxKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghZW5zdXJlRnJhbWVJ
c0NhY2hlZCgwKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDR0ltYWdlUmVm
IGltYWdlID0gbnVsbHB0cjsKLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpKQotICAgICAgICBpbWFn
ZSA9IG1fZnJhbWVzWzBdLm1faW1hZ2UuZ2V0KCk7Ci0KLSAgICBpZiAoIWltYWdlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBjaGVjayBmb3Igc29saWQgY29s
b3IgaW4gdGhlIGltcG9ydGFudCBzcGVjaWFsIGNhc2Ugb2YgYSAxeDEgaW1hZ2UuCi0gICAgaWYg
KENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgPT0gMSAmJiBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSA9
PSAxKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKLSAgICAgICAg
UmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFj
ZVJlZigpLAotICAgICAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0IHwga0NH
Qml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKLSAgICAgICAgaWYgKCFiaXRtYXBDb250ZXh0KQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBHcmFwaGljc0NvbnRleHQoYml0bWFwQ29udGV4dC5n
ZXQoKSkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwotICAgICAgICBDR1Jl
Y3QgZGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKTsKLSAgICAgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCwgaW1h
Z2UpOwotICAgICAgICBpZiAoIXBpeGVsWzNdKQotICAgICAgICAgICAgbV9zb2xpZENvbG9yID0g
Q29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc29saWRDb2xv
ciA9IENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4
ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKLQotICAgICAgICBt
X2lzU29saWRDb2xvciA9IHRydWU7Ci0gICAgfQotfQotCiBDR0ltYWdlUmVmIEJpdG1hcEltYWdl
OjpnZXRDR0ltYWdlUmVmKCkKIHsKICAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5kZXgoMCkuZ2V0
KCk7CkBAIC0yMjksMTEgKzEzNSwxMSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQml0bWFwSW1h
Z2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBpZiAo
aW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlm
IChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQor
ICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5oYXNJ
bWFnZSgpKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsKIAotICAgIGlmICghbV9mcmFt
ZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlOworICAgIGlmICghbV9mcmFtZXNbaW5kZXhdLnN1YnNhbXBsaW5nTGV2ZWwo
KSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pbWFnZSgpOwogCiAgICAgcmV0dXJu
IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRnJhbWVEYXRhQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VGcmFtZURhdGFDRy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWNmZTQwY2QzYzczYjU5ZTdmMTNmOWYwMDMzNmEzNGVkM2U1YzJkNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRnJhbWVEYXRhQ0cuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW1hZ2VGcmFtZURhdGEuaCIKKworI2lmIFVTRShDRykKKworI2luY2x1ZGUgIkNvcmVHcmFwaGlj
c1NQSS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCisjaW5jbHVkZSAiU3ViaW1h
Z2VDYWNoZVdpdGhUaW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSW1hZ2VG
cmFtZURhdGE6OmNsZWFySW1hZ2UoKQoreworICAgIGlmICghaGFzSW1hZ2UoKSkKKyAgICAgICAg
cmV0dXJuOworI2lmIENBQ0hFX1NVQklNQUdFUworICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhcklt
YWdlKG1faW1hZ2UuZ2V0KCkpOworI2VuZGlmCisgICAgbV9pbWFnZSA9IG51bGxwdHI7Cit9CisK
K0ludFNpemUgSW1hZ2VGcmFtZURhdGE6OmltYWdlU2l6ZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4mIGltYWdlKQoreworICAgIHJldHVybiBpbWFnZSA/IEludFNpemUoQ0dJbWFnZUdldFdp
ZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpIDogSW50U2l6
ZSgpOworfQorICAgIAorYm9vbCBJbWFnZUZyYW1lRGF0YTo6aW1hZ2VBbHBoYShjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mKQoreworICAgIHJldHVybiB0cnVlOworfQorICAgIAorQ29sb3Ig
SW1hZ2VGcmFtZURhdGE6OmltYWdlU29saWRDb2xvcihjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4mIGltYWdlKQoreworICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKKyAgICBS
ZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNl
UmVmKCksCisgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1h
cEJ5dGVPcmRlcjMyQmlnKSk7CisKKyAgICBpZiAoIWJpdG1hcENvbnRleHQpCisgICAgICAgIHJl
dHVybiBDb2xvcigpOworCisgICAgR3JhcGhpY3NDb250ZXh0KGJpdG1hcENvbnRleHQuZ2V0KCkp
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKKyAgICBDR1JlY3QgZGVzdGlu
YXRpb25SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKTsKKyAgICBDR0NvbnRleHREcmF3SW1h
Z2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LCBpbWFnZS5nZXQoKSk7Cisg
ICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOworCisg
ICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1
IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKK30KKyAg
ICAKK30KKworI2VuZGlmIC8vIFVTRShDRykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276550</attachid>
            <date>2016-04-15 23:16:14 -0700</date>
            <delta_ts>2016-04-15 23:25:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160415231628.patch</filename>
            <type>text/plain</type>
            <size>53599</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFjMDM1MTAyMjA1NjUz
NjljOGM5MzkxOTllY2EyYzJhMWZhNGZjZS4uMTgwMGRkMjM2NjI0OWVlYjk1NTVkNGVlN2QyOTZk
ZjZjNGJlZGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE2LTA0LTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgUmVuYW1l
IEZyYW1lRGF0YSB0byBJbWFnZUZyYW1lRGF0YSBhbmQgbW92ZSBpdCB0byBhIHNlcGFyYXRlIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ0
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzdGF0dXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmlzQ29tcGxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6OmZyYW1lQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURh
dGE6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpvcmllbnRhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3Vic2FtcGxpbmdMZXZlbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZHVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpoYXNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6aGFzTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZURhdGFBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VGcmFtZURhdGFDYWlyby5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aW1hZ2VBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6aW1hZ2VTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRt
YXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2Fs
ZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENv
bG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1l
RGF0YUNHLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xl
YXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZUFscGhhKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZVNvbGlkQ29sb3IpOgorCiAyMDE2LTA0LTE1
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2FsbGluZyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjo6YW5pbWF0aW9uRW5kZWQoKSB3aWxs
IGNyYXNoIGlmIHRoZSBTVkcgcHJvcGVydHkgaXMgbm90IGFuaW1hdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA1ZTYyMWVmYmY0NjY4OGM0ZTVjOTJhZTk1NmE1NTdiODliNTkxZTdkLi5kMzNl
NGJiMzczNjQxMmQ2MDRkZWY3ZGFkMGRhMDY4Y2Y4MjIzNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjIxMyw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0lTT1ZUVEN1ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVu
dGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKaW5kZXggNWZmOTkxZmY3ZGEzMDhiYjkxODJlY2UzYmYxMjE3MzBhNTQ4ZDI4Ny4uMWU3
NzJkNDkwOWNlN2FiZmIyMjQ4NDg4ZDY4NGEwYWNiOTUwMDg4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC02OCw2ICs2OCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VG
cmFtZURhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2lu
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCA4N2E5MWQwNTRhZWU5ODUyMGRiYjllNGY2NzQzNmFmZjcwNmFmM2JkLi41ODA5OThiNmJmOWZi
YmIyYTY4ZmE0Zjc2Njk0OTNiMmExNWJmNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMTMyLDYgKzEzMiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUZyYW1lRGF0YUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ludFJlY3RD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA5NTA4Y2U0ZWY5NmE0ZjAwMjVlMDRhYzUyOWIyYWMxOTVhNjBjMmYzLi45
YTVlNDJjZTRiOGY2MjBkZmRjNjc1NmM5ZGRiYzg1Y2Y4NWQ4YzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtMTA0LDYgKzEwNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUZyYW1lRGF0YUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ludFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fp
cm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBhZWEzNTcxMDU5MDliN2M3ZWUyMDU1Mjc1OWVhYzk5
ZjQ1NmQ1YTAwLi4yM2FkM2MzMTRiZjM2MzJhMWQ1N2Y3MzNhZmU3ODY5MDdlMmQ4NmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDA2LDYgKzQwNiw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VGcmFtZURhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5D
YWlyby5jbWFrZQppbmRleCAyYzU1M2IwNTUxZGFkNjlhYTE5OWQ5NjBmNTUyMzQzZDkyMGYwN2Iz
Li5jZmE3MmVjZjM2YjQ2MzQzZjVlOTAzYzIyYjNkZDIzZmI5MzdiMzdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKQEAgLTMwLDYgKzMwLDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRnJhbWVEYXRhQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW50UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fp
cm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGRlYTQ3YzM2M2VlZmY3MGY0NzUyOThjODNiNDM2MTEwMjQ2YjE5OC4uZjE4
Njk5MDBlNTFkMGRlMzIyYmE5ZDdlNWZjMzgyNzMyOGQzYmRjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjI2OCwxMCArMjI2
OCwxMyBAQAogCQk1M0VEM0ZERjE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdz
R2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0VEM0ZERDE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmggKi87IH07CiAJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkEx
NjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTUzRUY3NjZDMTY1
MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkExNjUzMEE2MTAw
NENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CisJCTU1MDEzRUQ5MUNDMUFDODMwMEQ0
NTFFMiAvKiBJbWFnZUZyYW1lRGF0YUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1MDEzRUQ4MUNDMUFDODMwMEQ0NTFFMiAvKiBJbWFnZUZyYW1l
RGF0YUNHLmNwcCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1
NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3
RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3
RUQxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyog
SW1hZ2VEZWNvZGVyQ0cuaCAqLzsgfTsKKwkJNTU3RDYwNzAxQ0MxN0M2RjAwREQxMjkxIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1N0Q2MDZFMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1N0Q2MDcxMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU3RDYwNkYxQ0MxN0M2
RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4MDM3MTYxMUE2NkYwMEEwMEJB
RjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovOyB9
OwpAQCAtOTg0OCwxMCArOTg1MSwxMyBAQAogCQk1M0VEM0ZEQzE2N0E4OEU3MDA2NzYyRTYgLyog
SlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzRUQzRkREMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFs
U2V0dGluZ3NHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJ
bnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5nc01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1NTAxM0VEODFDQzFBQzgzMDBENDUxRTIgLyogSW1hZ2VGcmFtZURhdGFD
Ry5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lRGF0
YUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAw
NzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTVCODdFQTFD
QUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU3RDYwNkUxQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdl
RnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
RnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU3RDYwNkYxQ0Mx
N0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGlj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyog
U2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4MTAs
NiArMjE4MTYsNyBAQAogCQkJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNw
cCAqLywKIAkJCQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3Bw
ICovLAogCQkJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICov
LAorCQkJCTU1MDEzRUQ4MUNDMUFDODMwMEQ0NTFFMiAvKiBJbWFnZUZyYW1lRGF0YUNHLmNwcCAq
LywKIAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovLAog
CQkJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovLAog
CQkJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLywKQEAgLTIx
OTcxLDYgKzIxOTc4LDggQEAKIAkJCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VC
dWZmZXIuY3BwICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZl
ci5oICovLAogCQkJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEu
aCAqLywKKwkJCQk1NTdENjA2RTFDQzE3QzZGMDBERDEyOTEgLyogSW1hZ2VGcmFtZURhdGEuY3Bw
ICovLAorCQkJCTU1N0Q2MDZGMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5oICov
LAogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8sCiAJ
CQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovLAog
CQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCkBA
IC0yNjgwMyw2ICsyNjgxMiw3IEBACiAJCQkJMDc2MzA2RTExN0UxNjA4OTAwNUE3QzRFIC8qIEpT
U291cmNlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE3RkVFQUQxNkE0RTc0QjAwNEMwQzMz
IC8qIEpTU3BlZWNoU3ludGhlc2lzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTJBNUFEMjE2QTQ4
NjBBMDA5NzZBMjUgLyogSlNTcGVlY2hTeW50aGVzaXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU3RDYwNzExQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBQTdGRUVBNzE2QTRFNkYzMDA0QzBDMzMgLyogSlNTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBN0ZFRUE5MTZBNEU2RjMwMDRDMEMzMyAv
KiBKU1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgyNDMyOTBE
MENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDczOCw2
ICszMDc0OCw3IEBACiAJCQkJRTQ0NjE0MUEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxNjE4ODMyMkVCMDBDOTU0QjUgLyogSlNU
b3VjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxODE4ODMyMkVCMDBDOTU0QjUgLyog
SlNUb3VjaEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU1N0Q2MDcwMUNDMTdDNkYwMERE
MTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxQTE4
ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcw
MzM0RTkxNDVBMUYzNjAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMwODk0LDYgKzMwOTA1LDcgQEAKIAkJCQlGQUJFNzJGNjEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGQUJFNzJGODEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDVEOTEzQ0VFQUIyQTYwNTM0MjE4QUNGIC8qIE1hdGhNTE1lbmNs
b3NlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NTAxM0VEOTFDQzFBQzgzMDBENDUx
RTIgLyogSW1hZ2VGcmFtZURhdGFDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJGRTEw
NTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5
MDQ2REYxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRUQ0ODM5MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1MU2VsZWN0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA3Yzc4ZDM2NWMxYTQwMmU2ZWMxOTRiNzcy
ZjU1YTllZGJkNmNkZTMzLi5lZGYwMDMzMTE3NmUxM2U1NjU1Y2QyMDYxODhhZGRmMDU1OTdmMjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCkBAIC02MCw4ICs2MCw2IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlcikKICAgICAsIG1fcHJvZ3Jlc3NpdmVMb2FkQ2h1bmtUaW1lKDApCiAgICAg
LCBtX3Byb2dyZXNzaXZlTG9hZENodW5rQ291bnQoMCkKICNlbmRpZgotICAgICwgbV9pc1NvbGlk
Q29sb3IoZmFsc2UpCi0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQogICAgICwg
bV9hbmltYXRpb25GaW5pc2hlZChmYWxzZSkKICAgICAsIG1fYWxsRGF0YVJlY2VpdmVkKGZhbHNl
KQogICAgICwgbV9oYXZlU2l6ZShmYWxzZSkKQEAgLTcxLDYgKzY5LDMyIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fYW5pbWF0aW9u
RmluaXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKIH0KKyAgICAKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKKyAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9jdXJyZW50RnJhbWUoMCkKKyAgICAs
IG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQorICAgICwgbV9yZXBldGl0aW9uQ291
bnRTdGF0dXMoVW5rbm93bikKKyAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQorICAgICwg
bV9kZWNvZGVkU2l6ZSgwKQorICAgICwgbV9kZWNvZGVkUHJvcGVydGllc1NpemUoMCkKKyAgICAs
IG1fZnJhbWVDb3VudCgxKQorICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQorICAgICwg
bV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKKyAgICAsIG1faGF2ZVNpemUodHJ1ZSkKKyAgICAsIG1f
c2l6ZUF2YWlsYWJsZSh0cnVlKQorICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQoreworICAg
IG1fZnJhbWVzLmdyb3coMSk7CisgICAgbV9mcmFtZXNbMF0gPSBJbWFnZUZyYW1lRGF0YShpbWFn
ZSk7CisgICAgCisgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgorICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KKyAgICBtX3NpemUgPSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX2ZyYW1lc1sw
XS5zaXplKCk7CisgICAgbV9kZWNvZGVkU2l6ZSA9IG1fZnJhbWVzWzBdLmZyYW1lQnl0ZXMoKTsK
KyAgICAKKyAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKK30KIAogQml0bWFwSW1hZ2U6On5CaXRt
YXBJbWFnZSgpCiB7CkBAIC05OCw3ICsxMjIsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5z
aXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRl
eF0ubV9pbWFnZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmltYWdlKCk7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTExOCw4
ICsxNDIsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsKQogICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBmcmFtZSBpc24ndCBhY3R1YWxseSBj
aGFuZ2luZyAod2UncmUganVzdCB0cnlpbmcgdG8KICAgICAgICAgLy8gc2F2ZSB0aGUgbWVtb3J5
IGZvciB0aGUgZnJhbWVidWZmZXIgZGF0YSksIHNvIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIKICAg
ICAgICAgLy8gdGhlIG1ldGFkYXRhLgotICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9m
cmFtZXNbaV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoZmFs
c2UpKQorICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9mcmFtZXNbaV0uZnJhbWVCeXRl
cygpOworICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoQ2FjaGVNZXRhZGF0YSkpCiAgICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOwogICAgIH0KIApAQCAtMTQ0
LDcgKzE2OCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNz
YXJ5KGJvb2wgZGVzdHJveUFsbCkKIAogICAgIHVuc2lnbmVkIGFsbEZyYW1lQnl0ZXMgPSAwOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IGFsbEZyYW1lQnl0ZXMgKz0gbV9mcmFtZXNbaV0ubV9mcmFtZUJ5dGVzOworICAgICAgICBhbGxG
cmFtZUJ5dGVzICs9IG1fZnJhbWVzW2ldLmZyYW1lQnl0ZXMoKTsKIAogICAgIGlmIChhbGxGcmFt
ZUJ5dGVzID4gbGFyZ2VBbmltYXRpb25DdXRvZmYpCiAgICAgICAgIGRlc3Ryb3lEZWNvZGVkRGF0
YShkZXN0cm95QWxsKTsKQEAgLTE1Miw4ICsxNzYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwpCiAKIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeSh1bnNpZ25lZCBmcmFtZUJ5dGVzQ2xlYXJl
ZCwgQ2xlYXJlZFNvdXJjZSBjbGVhcmVkU291cmNlKQogewotICAgIG1faXNTb2xpZENvbG9yID0g
ZmFsc2U7Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IGZhbHNlOworICAgIG1fc29saWRD
b2xvciA9IE51bGxvcHQ7CiAgICAgaW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogCiAgICAgQVNT
RVJUKG1fZGVjb2RlZFNpemUgPj0gZnJhbWVCeXRlc0NsZWFyZWQpOwpAQCAtMTc3LDI5ICsyMDAs
MTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwg
bnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBpZiAo
ZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1l
c1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxp
bmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAm
JiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgICAgIGNoZWNrRm9yU29saWRDb2xv
cigpOwotICAgIH0KLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0aW9uID0gbV9zb3Vy
Y2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXZl
TWV0YWRhdGEgPSB0cnVlOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2lzQ29tcGxldGUgPSBtX3Nv
dXJjZS5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKLQotICAgIGlmIChyZXBldGl0aW9u
Q291bnQoZmFsc2UpICE9IGNBbmltYXRpb25Ob25lKQotICAgICAgICBtX2ZyYW1lc1tpbmRleF0u
bV9kdXJhdGlvbiA9IG1fc291cmNlLmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKLQotICAg
IG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoaW5kZXgpOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5m
cmFtZUJ5dGVzQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBjb25zdCBJ
bnRTaXplIGZyYW1lU2l6ZShpbmRleCA/IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpIDogbV9zaXplKTsKLSAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwg
JiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKKyAgICBtX2ZyYW1lc1tpbmRleF0gPSBtX3NvdXJjZS5j
cmVhdGVGcmFtZURhdGFBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBmcmFtZUNhY2hp
bmcpOworICAgIAorICAgIGlmIChpbmRleCAmJiBtX2ZyYW1lc1tpbmRleF0uc2l6ZSgpICE9IG1f
c2l6ZSkKICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7CiAKLSAgICBpZiAo
bV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKLSAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZl
Q2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOworICAgIGlmIChtX2ZyYW1l
c1tpbmRleF0uaGFzSW1hZ2UoKSkgeworICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0
PGludD4obV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSk7CiAgICAgICAgIG1fZGVjb2RlZFNp
emUgKz0gZGVsdGFCeXRlczsKICAgICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2ls
bCBzdWJzdW1lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVzZWQKICAgICAgICAgLy8gdG8g
ZGV0ZXJtaW5lIGltYWdlIHByb3BlcnRpZXMuCkBAIC0yODgsMTcgKzI5NSwxNiBAQCBib29sIEJp
dG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8g
Tk9URTogRG9uJ3QgY2FsbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxs
IHRyeSB0bwogICAgICAgICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29k
ZWQgb3IKICAgICAgICAgLy8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAg
ICAgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAg
ICAgICAgaWYgKG1fZnJhbWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lz
Q29tcGxldGUpCi0gICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0u
Y2xlYXIodHJ1ZSkgPyBmcmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChtX2ZyYW1lc1tpXS5o
YXNNZXRhZGF0YSgpICYmICFtX2ZyYW1lc1tpXS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAgICBm
cmFtZUJ5dGVzQ2xlYXJlZCArPSBtX2ZyYW1lc1tpXS5jbGVhcihDYWNoZU5vbmUpOwogICAgIH0K
ICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRT
b3VyY2U6Ok5vKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBm
b3IgaU9TPwogICAgIGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1w
dHkoKSkgewotICAgICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAx
XS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAx
XS5jbGVhcih0cnVlKSkgeworICAgICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5z
aXplKCkgLSAxXS5mcmFtZUJ5dGVzKCk7CisgICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5z
aXplKCkgLSAxXS5jbGVhcihDYWNoZU5vbmUpKSB7CiAgICAgICAgICAgICBkZWx0YUJ5dGVzICs9
IGJ5dGVzOwogICAgICAgICAgICAgZGVsdGFCeXRlcyArPSBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6
ZTsKICAgICAgICAgICAgIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplID0gMDsKQEAgLTM2OCw4ICsz
NzQsOCBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRl
eCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hp
bmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkK
LSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFt
ZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBD
YWNoZU1ldGFkYXRhQW5kSW1hZ2UgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAg
ICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4
XS5oYXNNZXRhZGF0YSgpKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNo
aW5nKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzg0LDEwICszOTAsOSBAQCBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBw
cmVzZW50YXRpb25TYwogCiAgICAgLy8gV2UgbWF5IGhhdmUgY2FjaGVkIGEgZnJhbWUgd2l0aCBh
IGhpZ2hlciBzdWJzYW1wbGluZyBsZXZlbCwgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkIHRvCiAgICAg
Ly8gcmUtZGVjb2RlIHdpdGggYSBsb3dlciBsZXZlbC4KLSAgICBpZiAoaW5kZXggPCBtX2ZyYW1l
cy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgJiYgc3Vic2FtcGxpbmdMZXZlbCA8
IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKKyAgICBpZiAoaW5kZXggPCBt
X2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdlKCkgJiYgc3Vic2FtcGxp
bmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5zdWJzYW1wbGluZ0xldmVsKCkpIHsKICAgICAgICAg
Ly8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2FjaGVkLCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6
ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24uCi0gICAgICAgIGludCBzaXplQ2hhbmdlID0g
LW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5j
bGVhcih0cnVlKTsKKyAgICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLmNs
ZWFyKENhY2hlTm9uZSk7CiAgICAgICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKICAgICAg
ICAgbV9kZWNvZGVkU2l6ZSArPSBzaXplQ2hhbmdlOwogICAgICAgICBpZiAoaW1hZ2VPYnNlcnZl
cigpKQpAQCAtMzk1LDI2ICs0MDAsMjYgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2MKICAgICB9
CiAKICAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBmcmFtZSB5ZXQsIGRvIHNvLgotICAg
IGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
KQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBDYWNoZU1ldGFk
YXRhQW5kRnJhbWUpOworICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJh
bWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5kSW1hZ2UpOwogCi0gICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKIH0K
IAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgp
CiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25s
eSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2lz
Q29tcGxldGU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pc0NvbXBsZXRlKCk7CiB9CiAK
IGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkp
CisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247
CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5kdXJhdGlvbigpOwogfQogCiBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQpAQCAtNDI0LDEx
ICs0MjksMTEgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkKIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6
ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVN
ZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVN
ZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4
XS5tX2hhdmVNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2hhc0Fs
cGhhOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0
dXJuIG1fZnJhbWVzW2luZGV4XS5oYXNBbHBoYSgpOwogCiAgICAgcmV0dXJuIG1fc291cmNlLmZy
YW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKIH0KQEAgLTQ0MCwxMSArNDQ1LDExIEBAIGJvb2wg
Qml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiAKIEltYWdlT3JpZW50
YXRpb24gQml0bWFwSW1hZ2U6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5
KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGEpKQog
ICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOwogCi0gICAgaWYgKG1fZnJhbWVzW2lu
ZGV4XS5tX2hhdmVNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX29y
aWVudGF0aW9uOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkKKyAgICAg
ICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5vcmllbnRhdGlvbigpOwogCiAgICAgcmV0dXJuIG1f
c291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CiB9CkBAIC02NjcsMTkgKzY3Miw0MCBA
QCBib29sIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oQW5pbWF0aW9uQWR2
YW5jZW1lbnQgYWR2YW5jZW1lbnQpCiAKICAgICByZXR1cm4gYWR2YW5jZWRBbmltYXRpb247CiB9
CisgICAgCit2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQoreworICAgIG1f
c29saWRDb2xvciA9IENvbG9yKCk7CisgICAgCisgICAgaWYgKGZyYW1lQ291bnQoKSAhPSAxKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIShlbnN1cmVGcmFtZUlzQ2FjaGVkKDAsIENhY2hl
TWV0YWRhdGEpICYmIG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1swXS5oYXNNZXRhZGF0YSgp
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZnJhbWVzWzBdLnNpemUoKSAhPSBJbnRT
aXplKDEsIDEpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIShlbnN1cmVGcmFtZUlzQ2Fj
aGVkKDAsIENhY2hlTWV0YWRhdGFBbmRJbWFnZSkgJiYgbV9mcmFtZXNbMF0uaGFzSW1hZ2UoKSkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fc29saWRDb2xvciA9IG1fZnJhbWVzWzBdLnNvbGlk
Q29sb3IoKTsKK30KIAogYm9vbCBCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKCkK
IHsKLSAgICBpZiAoIW1fY2hlY2tlZEZvclNvbGlkQ29sb3IgJiYgZnJhbWVDb3VudCgpID4gMCkg
eworICAgIGlmIChmcmFtZUNvdW50KCkgIT0gMSB8fCBtX2N1cnJlbnRGcmFtZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghbV9zb2xpZENvbG9yKQogICAgICAgICBjaGVj
a0ZvclNvbGlkQ29sb3IoKTsKLSAgICAgICAgQVNTRVJUKG1fY2hlY2tlZEZvclNvbGlkQ29sb3Ip
OwotICAgIH0KLSAgICByZXR1cm4gbV9pc1NvbGlkQ29sb3IgJiYgIW1fY3VycmVudEZyYW1lOwor
ICAgIAorICAgIHJldHVybiBzb2xpZENvbG9yKCkuaXNWYWxpZCgpOwogfQogCiBDb2xvciBCaXRt
YXBJbWFnZTo6c29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc29saWRDb2xvcjsK
KyAgICByZXR1cm4gbV9zb2xpZENvbG9yID8gbV9zb2xpZENvbG9yLnZhbHVlKCkgOiBDb2xvcigp
OwogfQogICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpCkBAIC02OTksOCArNzI1
LDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50LWZyYW1lIiwgbV9jdXJyZW50RnJhbWUpOwogICAg
IH0KICAgICAKLSAgICBpZiAobV9pc1NvbGlkQ29sb3IpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgic29saWQtY29sb3IiLCBtX2lzU29saWRDb2xvcik7CisgICAgaWYgKG1fc29saWRDb2xvcikK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzb2xpZC1jb2xvciIsIG1fc29saWRDb2xvci52YWx1
ZSgpKTsKICAgICAKICAgICBtX3NvdXJjZS5kdW1wKHRzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDdjOGVjYWNmYzZjNjFjOTQ0
NGQ2MWFkZDRlMjc5NzZjYjIwMjFkNTAuLmViYTMzN2FiZDk0YzQzZTk3NmNmNmNhMzhlZjE1ZTI1
NWMxYmMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMjgsOCArMjgsOSBAQAogI2lmbmRlZiBCaXRtYXBJbWFnZV9oCiAjZGVmaW5l
IEJpdG1hcEltYWdlX2gKIAotI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIK
KyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVk
ZSAiSW50U2l6ZS5oIgpAQCAtNjAsNDYgKzYxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBUaW1lcjsKIAotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0vLyBGcmFtZURhdGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsKLXB1YmxpYzoK
LSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3Jp
ZW50YXRpb24pCi0gICAgICAgICwgbV9zdWJzYW1wbGluZ0xldmVsKDApCi0gICAgICAgICwgbV9k
dXJhdGlvbigwKQotICAgICAgICAsIG1faGF2ZU1ldGFkYXRhKGZhbHNlKQotICAgICAgICAsIG1f
aXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRydWUpCi0gICAgICAgICwg
bV9mcmFtZUJ5dGVzKDApCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsg
Ci0gICAgICAgIGNsZWFyKHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQg
aW1hZ2UgZGF0YSBvbiB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgot
ICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xl
YXIuCi0gICAgYm9vbCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotCi0gICAgTmF0aXZlSW1h
Z2VQdHIgbV9pbWFnZTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247Ci0gICAg
U3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgZmxvYXQgbV9kdXJhdGlv
bjsKLSAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKLSAgICBib29sIG1faXNDb21wbGV0ZSA6
IDE7Ci0gICAgYm9vbCBtX2hhc0FscGhhIDogMTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lQnl0ZXM7
Ci19OwotCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0vLyBCaXRtYXBJbWFnZSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotCiBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1Ymxp
YyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBj
bGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTsKQEAgLTIyMSwxMSArMTgyLDEwIEBAIHByb3Rl
Y3RlZDoKICAgICBJbWFnZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVf
dCk7CiAKICAgICAvLyBEZWNvZGVzIGFuZCBjYWNoZXMgYSBmcmFtZS4gTmV2ZXIgYWNjZXNzZWQg
ZXhjZXB0IGludGVybmFsbHkuCi0gICAgZW51bSBJbWFnZUZyYW1lQ2FjaGluZyB7IENhY2hlTWV0
YWRhdGFPbmx5LCBDYWNoZU1ldGFkYXRhQW5kRnJhbWUgfTsKLSAgICB2b2lkIGNhY2hlRnJhbWUo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hl
TWV0YWRhdGFBbmRGcmFtZSk7CisgICAgdm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kSW1hZ2Up
OwogCiAgICAgLy8gQ2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBp
bmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJldHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5k
cy4KLSAgICBib29sIGVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1l
Q2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlz
Q2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5k
SW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4g
fGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFt
ZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0y
NzIsOCArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0ZVBsYXRmb3JtRGF0
YSgpOwogCiAgICAgLy8gQ2hlY2tzIHRvIHNlZSBpZiB0aGUgaW1hZ2UgaXMgYSAxeDEgc29saWQg
Y29sb3IuIFdlIG9wdGltaXplIHRoZXNlIGltYWdlcyBhbmQganVzdCBkbyBhIGZpbGwgcmVjdCBp
bnN0ZWFkLgotICAgIC8vIFRoaXMgY2hlY2sgc2hvdWxkIGhhcHBlbiByZWdhcmRsZXNzIHdoZXRo
ZXIgbV9jaGVja2VkRm9yU29saWRDb2xvciBpcyBhbHJlYWR5IHNldCwgYXMgdGhlIGZyYW1lIG1h
eSBoYXZlCi0gICAgLy8gY2hhbmdlZC4KKyAgICAvLyBUaGlzIGNoZWNrIHNob3VsZCBoYXBwZW4g
cmVnYXJkbGVzcyB3aGV0aGVyIG1fc29saWRDb2xvciBpcyBhbHJlYWR5IHNldCwgYXMgdGhlIGZy
YW1lIG1heSBoYXZlIGNoYW5nZWQuCiAgICAgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKTsKIAog
ICAgIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgb3ZlcnJpZGU7CkBAIC0yOTQsNyArMjUz
LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGluZ09yaWVu
dGF0aW9uOwogCiAgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lOyAvLyBUaGUgaW5kZXggb2YgdGhl
IGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgotICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+IG1f
ZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9u
LiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgorICAgIFZl
Y3RvcjxJbWFnZUZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNo
ZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4g
dGhlbSBpbiB0aGUgY2FjaGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJhbWVU
aW1lcjsKICAgICBpbnQgbV9yZXBldGl0aW9uQ291bnQ7IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1h
dGlvbiBsb29wcyB3ZSBzaG91bGQgZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0
aGlzIGltYWdlIHR5cGUgaXMgaW5jYXBhYmxlIG9mIGFuaW1hdGlvbi4KQEAgLTMwOSw3ICsyNjgs
NyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmV0YWluUHRyPENGRGF0YVJlZj4gbV90aWZmUmVw
OyAvLyBDYWNoZWQgVElGRiByZXAgZm9yIGZyYW1lIDAuIE9ubHkgYnVpbHQgbGF6aWx5IGlmIHNv
bWVvbmUgcXVlcmllcyBmb3Igb25lLgogI2VuZGlmCiAKLSAgICBDb2xvciBtX3NvbGlkQ29sb3I7
ICAvLyBJZiB3ZSdyZSBhIDF4MSBzb2xpZCBjb2xvciwgdGhpcyBpcyB0aGUgY29sb3IgdG8gdXNl
IHRvIGZpbGwuCisgICAgT3B0aW9uYWw8Q29sb3I+IG1fc29saWRDb2xvcjsgLy8gSWYgd2UncmUg
YSAxeDEgc29saWQgY29sb3IsIHRoaXMgaXMgdGhlIGNvbG9yIHRvIHVzZSB0byBmaWxsLgogCiAg
ICAgdW5zaWduZWQgbV9kZWNvZGVkU2l6ZTsgLy8gVGhlIGN1cnJlbnQgc2l6ZSBvZiBhbGwgZGVj
b2RlZCBmcmFtZXMuCiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6
ZTsgLy8gVGhlIHNpemUgb2YgZGF0YSBkZWNvZGVkIGJ5IHRoZSBzb3VyY2UgdG8gZGV0ZXJtaW5l
IGltYWdlIHByb3BlcnRpZXMgKGUuZy4gc2l6ZSwgZnJhbWUgY291bnQsIGV0YykuCkBAIC0zMjAs
OSArMjc5LDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9wcm9ncmVzc2l2ZUxvYWRDaHVua1Rp
bWU7CiAgICAgdWludDE2X3QgbV9wcm9ncmVzc2l2ZUxvYWRDaHVua0NvdW50OwogI2VuZGlmCi0g
ICAgYm9vbCBtX2lzU29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBhIDF4
MSBzb2xpZCBpbWFnZS4KLSAgICBib29sIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgOiAxOyAvLyBX
aGV0aGVyIHdlJ3ZlIGNoZWNrZWQgdGhlIGZyYW1lIGZvciBzb2xpZCBjb2xvci4KLQogICAgIGJv
b2wgbV9hbmltYXRpb25GaW5pc2hlZCA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlJ3ZlIGNvbXBs
ZXRlZCB0aGUgZW50aXJlIGFuaW1hdGlvbi4KIAogICAgIGJvb2wgbV9hbGxEYXRhUmVjZWl2ZWQg
OiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSd2ZSByZWNlaXZlZCBhbGwgb3VyIGRhdGEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTZlODZhMTc2MjIyODVmYzc0MDIzYWE1NjVlNDkyMmJlNGU4OTM4MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWVEYXRhLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUZy
YW1lRGF0YS5oIgorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCisj
ZWxzZQorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YSgpCit7Cit9CisKK0lt
YWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
CisgICAgOiBtX3N0YXR1cyhGcmFtZUNvbXBsZXRlKQorICAgICwgbV9zaXplKEltYWdlRnJhbWVE
YXRhOjppbWFnZVNpemUoaW1hZ2UpKQorICAgICwgbV9pbWFnZShpbWFnZSkKKyAgICAsIG1faGFz
QWxwaGEoSW1hZ2VGcmFtZURhdGE6OmltYWdlQWxwaGEoaW1hZ2UpKQoreworfQorCitJbWFnZUZy
YW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoY29uc3QgSW1hZ2VEZWNvZGVyJiBkZWNvZGVyLCBzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNh
Y2hpbmcgZnJhbWVDYWNoaW5nKQoreworICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgJiBDYWNoZU1l
dGFkYXRhKTsKKworICAgIGlmIChmcmFtZUNhY2hpbmcgJiBDYWNoZUltYWdlKSB7CisgICAgICAg
IG1faW1hZ2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKTsKKyAgICAgICAgbV9zdWJzYW1wbGluZ0xldmVsID0gc3Vic2FtcGxpbmdMZXZl
bDsKKyAgICB9CisKKyAgICBpZiAoZnJhbWVDYWNoaW5nICYgQ2FjaGVNZXRhZGF0YSkgeworICAg
ICAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rlci5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwor
ICAgICAgICBtX3N0YXR1cyA9IGRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkg
PyBGcmFtZUNvbXBsZXRlIDogRnJhbWVQYXJ0aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRl
Y29kZXIucmVwZXRpdGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBt
X2R1cmF0aW9uID0gZGVjb2Rlci5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisKKyAgICAg
ICAgbV9oYXNBbHBoYSA9IGRlY29kZXIuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAg
ICAgICBtX3NpemUgPSBkZWNvZGVyLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5n
TGV2ZWwpOworICAgIH0KK30KKworSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7
CisgICAgY2xlYXJJbWFnZSgpOworfQorCit1bnNpZ25lZCBJbWFnZUZyYW1lRGF0YTo6Y2xlYXIo
SW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQoreworICAgIEFTU0VSVCghKGZyYW1lQ2Fj
aGluZyAmIENhY2hlSW1hZ2UpKTsKKworICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5m
cmFtZUJ5dGVzKCk7CisKKyAgICBjbGVhckltYWdlKCk7CisKKyAgICBpZiAoZnJhbWVDYWNoaW5n
ID09IENhY2hlTm9uZSkKKyAgICAgICAgKnRoaXMgPSBJbWFnZUZyYW1lRGF0YSgpOworCisgICAg
cmV0dXJuIGZyYW1lQnl0ZXM7Cit9CisgICAgCitDb2xvciBJbWFnZUZyYW1lRGF0YTo6c29saWRD
b2xvcigpIGNvbnN0Cit7CisgICAgaWYgKG1fc2l6ZSAhPSBJbnRTaXplKDEsIDEpIHx8ICFoYXNJ
bWFnZSgpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gSW1hZ2VG
cmFtZURhdGE6OmltYWdlU29saWRDb2xvcihtX2ltYWdlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmYzYmQ2Mjg3OTQ3OGY3MmNmZWE0NWQ2NDdkNGM2ZGZiZjU0Mzg3NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBJbWFnZUZyYW1lRGF0YV9oCisjZGVmaW5lIEltYWdlRnJhbWVEYXRhX2gK
KworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2lu
Y2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisvLyBTdWJzYW1w
bGluZ0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBl
YWNoIGF4aXMgZXRjLgordHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOworCitjb25zdCBT
dWJzYW1wbGluZ0xldmVsIE1pblN1YnNhbXBsaW5nTGV2ZWwgPSAwOworY29uc3QgU3Vic2FtcGxp
bmdMZXZlbCBNYXhTdWJzYW1wbGluZ0xldmVsID0gMzsKK2NvbnN0IFN1YnNhbXBsaW5nTGV2ZWwg
RGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwgPSBNaW5TdWJzYW1wbGluZ0xldmVsOworCitlbnVtIElt
YWdlRnJhbWVDYWNoaW5nIHsKKyAgICBDYWNoZU5vbmUsCisgICAgQ2FjaGVNZXRhZGF0YSwKKyAg
ICBDYWNoZUltYWdlLAorICAgIENhY2hlTWV0YWRhdGFBbmRJbWFnZQorfTsKKworZW51bSBJbWFn
ZUZyYW1lU3RhdHVzIHsKKyAgICBGcmFtZUVtcHR5LAorICAgIEZyYW1lUGFydGlhbCwKKyAgICBG
cmFtZUNvbXBsZXRlCit9OworCitjbGFzcyBJbWFnZURlY29kZXI7CisKK2NsYXNzIEltYWdlRnJh
bWVEYXRhIHsKK3B1YmxpYzoKKyAgICBJbWFnZUZyYW1lRGF0YSgpOworICAgIEltYWdlRnJhbWVE
YXRhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgSW1hZ2VGcmFtZURhdGEoY29uc3QgSW1h
Z2VEZWNvZGVyJiwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVsdFN1YnNh
bXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEltYWdlKTsK
KyAgICAKKyAgICB+SW1hZ2VGcmFtZURhdGEoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjbGVhcihJ
bWFnZUZyYW1lQ2FjaGluZyk7CisgICAgQ29sb3Igc29saWRDb2xvcigpIGNvbnN0OworICAgIAor
ICAgIEltYWdlRnJhbWVTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0K
KyAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBGcmFtZUNv
bXBsZXRlOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Cisg
ICAgdW5zaWduZWQgZnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3Np
emUuYXJlYSgpICogNCA6IDA7IH0KKyAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2U7IH0KKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2FtcGxpbmdMZXZlbDsgfQor
ICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQorICAgIAor
ICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2hhc0FscGhhOyB9CisgICAgYm9v
bCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICBib29sIGhhc01ldGFk
YXRhKCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZS5pc0VtcHR5KCk7IH0KKyAgICAKK3ByaXZhdGU6
CisgICAgdm9pZCBjbGVhckltYWdlKCk7CisgICAgCisgICAgc3RhdGljIEludFNpemUgaW1hZ2VT
aXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgc3RhdGljIGJvb2wgaW1hZ2VBbHBoYShj
b25zdCBOYXRpdmVJbWFnZVB0ciYpOworICAgIHN0YXRpYyBDb2xvciBpbWFnZVNvbGlkQ29sb3Io
Y29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKKyAgICAKKyAgICBJbWFnZUZyYW1lU3RhdHVzIG1fc3Rh
dHVzIHsgRnJhbWVFbXB0eSB9OworICAgIEludFNpemUgbV9zaXplOworICAgIE5hdGl2ZUltYWdl
UHRyIG1faW1hZ2U7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsg
RGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2Ft
cGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9OworICAgIGJvb2wg
bV9oYXNBbHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBJbWFnZUZyYW1l
RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKaW5kZXggN2VkOWZkMWQwNzY3OTNkZmY0ZGY3Y2QyM2Q3N2Y1ODFiOGRhYTI4Yi4uYzEw
OGNmMTExNTYyYzJlYTkyMjE1ODM2OGZhNjY0YTA2NzU0MzRkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjE0LDYgKzIxNCwx
MSBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldgogewogICAgIHJldHVybiBpbml0aWFsaXplZCgp
ID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdM
ZXZlbCkgOiBudWxscHRyOwogfQorICAgIAorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNy
ZWF0ZUZyYW1lRGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAgICByZXR1
cm4gaW5pdGlhbGl6ZWQoKSA/IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsLCBmcmFtZUNhY2hpbmcpIDogSW1hZ2VGcmFtZURhdGEoKTsKK30KIAogdm9p
ZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGE4OTgwNzYxYjQ0
MTcyYTY4ODMzNWFiOTc5MGI4OTQ4ZDczMTAzZjkuLmFjMzYxZDc3N2UxMDIxZWQ5NGQ1ODc1YzZm
YTQyMzFiOTk3MWIxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBJbWFnZVNvdXJjZV9oCiAj
ZGVmaW5lIEltYWdlU291cmNlX2gKIAorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2VQdHIuaCIKQEAgLTYzLDkgKzY0LDYgQEAgY29uc3QgaW50IGNBbmltYXRp
b25Mb29wT25jZSA9IDA7CiBjb25zdCBpbnQgY0FuaW1hdGlvbkxvb3BJbmZpbml0ZSA9IC0xOwog
Y29uc3QgaW50IGNBbmltYXRpb25Ob25lID0gLTI7CiAKLS8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAg
aXMgbm8gc3Vic2FtcGxpbmcsIDEgaXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMu
Ci10eXBlZGVmIHNob3J0IFN1YnNhbXBsaW5nTGV2ZWw7Ci0KIGNsYXNzIEltYWdlU291cmNlIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZVNvdXJjZSk7CiAgICAgZnJpZW5kIGNsYXNz
IEJpdG1hcEltYWdlOwpAQCAtMTI5LDE4ICsxMjcsMTkgQEAgcHVibGljOgogICAgIGJvb2wgYWxs
b3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgCiAgICAgLy8g
U2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNp
emVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OworICAgIElu
dFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0
U3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNw
ZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3Q7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1i
ZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQgZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0
CiAgICAgLy8gZGVjb2RlZCB0aGVuIHJldHVybiAwLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApIGNvbnN0OworICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJz
YW1wbGluZ0xldmVsKSBjb25zdDsKICAgICAKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QpOwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVf
dCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KICAgICAKICAgICAvLyBDYWxsZXJz
IHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVy
IGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIE5hdGl2
ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IDApOworICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJbWFn
ZUZyYW1lRGF0YSBjcmVhdGVGcmFtZURhdGFBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0
YWRhdGFBbmRJbWFnZSk7CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCmluZGV4IDFmNGVlMjA3NjZjMTVk
Y2Q3ZTBhZTZjYmMwZDRiZDFjNzM0NTE2MDEuLmMyNDZjMmY1MzExMmZiZTYzMmJjZjk0ZGI2Yjli
N2QwMjUyNDJjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCkBAIC0zOCwzMSArMzgsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiYmIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikK
LSAgICA6IEltYWdlKG9ic2VydmVyKQotICAgICwgbV9zaXplKGNhaXJvU3VyZmFjZVNpemUobmF0
aXZlSW1hZ2UuZ2V0KCkpKQotICAgICwgbV9jdXJyZW50RnJhbWUoMCkKLSAgICAsIG1fcmVwZXRp
dGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQotICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMo
VW5rbm93bikKLSAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQotICAgICwgbV9kZWNvZGVk
U2l6ZShtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSAqIDQpCi0gICAgLCBtX2ZyYW1l
Q291bnQoMSkKLSAgICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVja2VkRm9y
U29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQodHJ1ZSkKLSAgICAs
IG1fYWxsRGF0YVJlY2VpdmVkKHRydWUpCi0gICAgLCBtX2hhdmVTaXplKHRydWUpCi0gICAgLCBt
X3NpemVBdmFpbGFibGUodHJ1ZSkKLSAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKLXsKLSAg
ICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSBjYWlyb19z
dXJmYWNlX2dldF9jb250ZW50KG5hdGl2ZUltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NP
TE9SOwotICAgIG1fZnJhbWVzWzBdLm1faW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKLSAg
ICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0KLSAgICBjaGVja0ZvclNvbGlk
Q29sb3IoKTsKLX0KLQogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQogewpAQCAtMTIxLDQ0ICs5Niw2IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdCwgY29uc3QgRmxvCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsK
IH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKLXsKLSAgICBtX2lz
U29saWRDb2xvciA9IGZhbHNlOwotICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVlOwot
Ci0gICAgaWYgKGZyYW1lQ291bnQoKSA+IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8g
c3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICBpZiAoIXN1
cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0Lgot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNl
LmdldCgpKSAhPSBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEludFNpemUgc2l6ZSA9IGNhaXJvU3VyZmFjZVNpemUoc3VyZmFjZS5nZXQoKSk7Ci0KLSAg
ICBpZiAoc2l6ZS53aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB1bnNpZ25lZCogcGl4ZWxDb2xvciA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlLmdldCgpKSk7
Ci0gICAgbV9zb2xpZENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29s
b3IpOwotCi0gICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOwotfQotCi1ib29sIEZyYW1lRGF0YTo6
Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQotewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAg
ICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSAgICAg
ICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVT
RShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlRnJhbWVEYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VGcmFtZURhdGFDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFmZWJkZGZm
YjlhMjdjZTBhOWQ0YjY1NDUzNjI3OGNjZTBmYzliYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRnJhbWVEYXRhQ2Fpcm8uY3Bw
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgi
CisKKyNpZiBVU0UoQ0FJUk8pCisKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgSW1hZ2VGcmFtZURhdGE6OmNsZWFySW1hZ2UoKQorewor
ICAgIG1faW1hZ2UgPSBudWxscHRyOworfQorCitJbnRTaXplIEltYWdlRnJhbWVEYXRhOjppbWFn
ZVNpemUoY29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQoreworICAgIHJldHVy
biBpbWFnZSA/IGNhaXJvU3VyZmFjZVNpemUoaW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgpOworfQor
Citib29sIEltYWdlRnJhbWVEYXRhOjppbWFnZUFscGhhKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+JiBpbWFnZSkKK3sKKyAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChp
bWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKK30KKworQ29sb3IgSW1hZ2VGcmFt
ZURhdGE6OmltYWdlU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1h
Z2UpCit7CisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENB
SVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBJ
bnRTaXplIHNpemUgPSBjYWlyb1N1cmZhY2VTaXplKGltYWdlLmdldCgpKTsKKworICAgIGlmIChz
aXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCisgICAgICAgIHJldHVybiBD
b2xvcigpOworCisgICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSByZWludGVycHJldF9jYXN0X3B0
cjx1bnNpZ25lZCo+KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsK
KyAgICByZXR1cm4gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29sb3IpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
CmluZGV4IDY5MzJhMTJmZGY4YzExOGRkYjI0Yzg5MjdjZWM1Y2YxZmQ2NWViYmEuLjVmMWJiYjY3
MTBmZmU2MTkwNmEzYzNmOTMxZWRlMTdlNmViZWM3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC01MCwxMDAg
KzUwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIo
Ym9vbCBjbGVhck1ldGFkYXRhKQotewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAgICAgICBt
X2hhdmVNZXRhZGF0YSA9IGZhbHNlOwotCi0gICAgbV9zdWJzYW1wbGluZ0xldmVsID0gMDsKLQot
ICAgIGlmIChtX2ltYWdlKSB7Ci0jaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAgIHN1YmltYWdl
Q2FjaGUoKS5jbGVhckltYWdlKG1faW1hZ2UuZ2V0KCkpOwotI2VuZGlmCi0gICAgICAgIG1faW1h
Z2UgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1CaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUmV0YWluUHRyPENHSW1hZ2VSZWY+
JiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQotICAgIDogSW1hZ2Uob2JzZXJ2ZXIp
Ci0gICAgLCBtX2N1cnJlbnRGcmFtZSgwKQotICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1h
dGlvbk5vbmUpCi0gICAgLCBtX3JlcGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQotICAgICwg
bV9yZXBldGl0aW9uc0NvbXBsZXRlKDApCi0gICAgLCBtX2RlY29kZWRTaXplKDApCi0gICAgLCBt
X2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSgwKQotICAgICwgbV9mcmFtZUNvdW50KDEpCi0gICAgLCBt
X2lzU29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2Up
Ci0gICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKHRydWUpCi0gICAgLCBtX2FsbERhdGFSZWNlaXZl
ZCh0cnVlKQotICAgICwgbV9oYXZlU2l6ZSh0cnVlKQotICAgICwgbV9zaXplQXZhaWxhYmxlKHRy
dWUpCi0gICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCi17Ci0gICAgQ0dGbG9hdCB3aWR0aCA9
IENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSk7Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0lt
YWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKLSAgICBtX2RlY29kZWRTaXplID0gd2lkdGggKiBo
ZWlnaHQgKiA0OwotICAgIG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7Ci0KLSAgICAv
LyBTaW5jZSB3ZSBkb24ndCBoYXZlIGEgZGVjb2Rlciwgd2UgY2FuJ3QgZmlndXJlIG91dCB0aGUg
aW1hZ2Ugb3JpZW50YXRpb24uCi0gICAgLy8gU2V0IG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlv
biB0byBiZSB0aGUgc2FtZSBhcyBtX3NpemUgc28gaXQncyBub3QgMHgwLgotICAgIG1fc2l6ZVJl
c3BlY3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZTsKLQotICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0g
ICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBd
Lm1faGFzQWxwaGEgPSB0cnVlOwotICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1
ZTsKLQotICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpj
aGVja0ZvclNvbGlkQ29sb3IoKQotewotICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVl
OwotICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0KLSAgICBpZiAoZnJhbWVDb3VudCgpID4g
MSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFoYXZlRnJhbWVJbWFnZUF0SW5kZXgoMCkp
IHsKLSAgICAgICAgSW50U2l6ZSBzaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleCgwLCAw
KTsKLSAgICAgICAgaWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQo
MCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9
IG51bGxwdHI7Ci0gICAgaWYgKG1fZnJhbWVzLnNpemUoKSkKLSAgICAgICAgaW1hZ2UgPSBtX2Zy
YW1lc1swXS5tX2ltYWdlLmdldCgpOwotCi0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgY2hlY2sgZm9yIHNvbGlkIGNvbG9yIGluIHRo
ZSBpbXBvcnRhbnQgc3BlY2lhbCBjYXNlIG9mIGEgMXgxIGltYWdlLgotICAgIGlmIChDR0ltYWdl
R2V0V2lkdGgoaW1hZ2UpID09IDEgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gMSkgewot
ICAgICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCi0gICAgICAgIFJldGFpblB0
cjxDR0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENy
ZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwK
LSAgICAgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5
dGVPcmRlcjMyQmlnKSk7Ci0gICAgICAgIGlmICghYml0bWFwQ29udGV4dCkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KGJpdG1hcENvbnRleHQuZ2V0KCkpLnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKLSAgICAgICAgQ0dSZWN0IGRlc3Rp
bmF0aW9uUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgMSwgMSk7Ci0gICAgICAgIENHQ29udGV4dERy
YXdJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpLCBkZXN0aW5hdGlvblJlY3QsIGltYWdlKTsKLSAg
ICAgICAgaWYgKCFwaXhlbFszXSkKLSAgICAgICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKDAs
IDAsIDAsIDApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xv
cihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Ci0KLSAgICAgICAgbV9pc1NvbGlk
Q29sb3IgPSB0cnVlOwotICAgIH0KLX0KLQogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJ
bWFnZVJlZigpCiB7CiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApLmdldCgpOwpAQCAt
MjI5LDExICsxMzUsMTEgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5
VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49
IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXgg
Pj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKKyAgICBpZiAo
aW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkK
ICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCk7CiAKLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4
XS5tX3N1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9p
bWFnZTsKKyAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5zdWJzYW1wbGluZ0xldmVsKCkpCisgICAg
ICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKIAogICAgIHJldHVybiBtX3NvdXJj
ZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1lRGF0YUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRnJhbWVEYXRhQ0cuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVjZmU0MGNkM2M3M2I1OWU3ZjEzZjlmMDAzMzZhMzRlZDNlNWMyZDcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1l
RGF0YUNHLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRnJh
bWVEYXRhLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJDb3JlR3JhcGhpY3NTUEkuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVX
aXRoVGltZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEltYWdlRnJhbWVEYXRh
OjpjbGVhckltYWdlKCkKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkpCisgICAgICAgIHJldHVybjsK
KyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2lt
YWdlLmdldCgpKTsKKyNlbmRpZgorICAgIG1faW1hZ2UgPSBudWxscHRyOworfQorCitJbnRTaXpl
IEltYWdlRnJhbWVEYXRhOjppbWFnZVNpemUoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBp
bWFnZSkKK3sKKyAgICByZXR1cm4gaW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFn
ZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA6IEludFNpemUoKTsKK30K
KyAgICAKK2Jvb2wgSW1hZ2VGcmFtZURhdGE6OmltYWdlQWxwaGEoY29uc3QgUmV0YWluUHRyPENH
SW1hZ2VSZWY+JikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyAgICAKK0NvbG9yIEltYWdlRnJh
bWVEYXRhOjppbWFnZVNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFn
ZSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCisgICAgUmV0YWluUHRy
PENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAor
ICAgICAgICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkJpZykpOworCisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4gQ29s
b3IoKTsKKworICAgIEdyYXBoaWNzQ29udGV4dChiaXRtYXBDb250ZXh0LmdldCgpKS5zZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgQ0dSZWN0IGRlc3RpbmF0aW9uUmVj
dCA9IENHUmVjdE1ha2UoMCwgMCwgMSwgMSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1h
cENvbnRleHQuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCwgaW1hZ2UuZ2V0KCkpOworICAgIGlmICgh
cGl4ZWxbM10pCisgICAgICAgIHJldHVybiBDb2xvcigwLCAwLCAwLCAwKTsKKworICAgIHJldHVy
biBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVs
WzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Cit9CisgICAgCit9CisK
KyNlbmRpZiAvLyBVU0UoQ0cpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276551</attachid>
            <date>2016-04-15 23:25:21 -0700</date>
            <delta_ts>2016-04-17 20:27:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160415232536.patch</filename>
            <type>text/plain</type>
            <size>53587</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFjMDM1MTAyMjA1NjUz
NjljOGM5MzkxOTllY2EyYzJhMWZhNGZjZS4uMTgwMGRkMjM2NjI0OWVlYjk1NTVkNGVlN2QyOTZk
ZjZjNGJlZGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE2LTA0LTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgUmVuYW1l
IEZyYW1lRGF0YSB0byBJbWFnZUZyYW1lRGF0YSBhbmQgbW92ZSBpdCB0byBhIHNlcGFyYXRlIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ0
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1BcHBsZVdpbi5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbkNhaXJvLmNtYWtl
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcElt
YWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpzb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzdGF0dXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmlzQ29tcGxldGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6OmZyYW1lQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURh
dGE6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpvcmllbnRhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3Vic2FtcGxpbmdMZXZlbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZHVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpoYXNJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6aGFzTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZURhdGFBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VGcmFtZURhdGFDYWlyby5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aW1hZ2VBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6aW1hZ2VTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRt
YXBJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjb3B5VW5zY2Fs
ZWRGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENv
bG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1l
RGF0YUNHLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xl
YXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZUFscGhhKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZVNvbGlkQ29sb3IpOgorCiAyMDE2LTA0LTE1
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q2FsbGluZyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjo6YW5pbWF0aW9uRW5kZWQoKSB3aWxs
IGNyYXNoIGlmIHRoZSBTVkcgcHJvcGVydHkgaXMgbm90IGFuaW1hdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA1ZTYyMWVmYmY0NjY4OGM0ZTVjOTJhZTk1NmE1NTdiODliNTkxZTdkLi5kMzNl
NGJiMzczNjQxMmQ2MDRkZWY3ZGFkMGRhMDY4Y2Y4MjIzNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMjIxMyw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0lTT1ZUVEN1ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVu
dGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4u
Y21ha2UKaW5kZXggNWZmOTkxZmY3ZGEzMDhiYjkxODJlY2UzYmYxMjE3MzBhNTQ4ZDI4Ny4uMWU3
NzJkNDkwOWNlN2FiZmIyMjQ4NDg4ZDY4NGEwYWNiOTUwMDg4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC02OCw2ICs2OCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VG
cmFtZURhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2lu
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCA4N2E5MWQwNTRhZWU5ODUyMGRiYjllNGY2NzQzNmFmZjcwNmFmM2JkLi41ODA5OThiNmJmOWZi
YmIyYTY4ZmE0Zjc2Njk0OTNiMmExNWJmNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtMTMyLDYgKzEzMiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUZyYW1lRGF0YUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ludFJlY3RD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA5NTA4Y2U0ZWY5NmE0ZjAwMjVlMDRhYzUyOWIyYWMxOTVhNjBjMmYzLi45
YTVlNDJjZTRiOGY2MjBkZmRjNjc1NmM5ZGRiYzg1Y2Y4NWQ4YzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtMTA0LDYgKzEwNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUZyYW1lRGF0YUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ludFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fp
cm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBhZWEzNTcxMDU5MDliN2M3ZWUyMDU1Mjc1OWVhYzk5
ZjQ1NmQ1YTAwLi4yM2FkM2MzMTRiZjM2MzJhMWQ1N2Y3MzNhZmU3ODY5MDdlMmQ4NmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDA2LDYgKzQwNiw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VGcmFtZURhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJj
ZUNHTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5D
YWlyby5jbWFrZQppbmRleCAyYzU1M2IwNTUxZGFkNjlhYTE5OWQ5NjBmNTUyMzQzZDkyMGYwN2Iz
Li5jZmE3MmVjZjM2YjQ2MzQzZjVlOTAzYzIyYjNkZDIzZmI5MzdiMzdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKQEAgLTMwLDYgKzMwLDcgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRnJhbWVEYXRhQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW50UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fp
cm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGRlYTQ3YzM2M2VlZmY3MGY0NzUyOThjODNiNDM2MTEwMjQ2YjE5OC4uZjE4
Njk5MDBlNTFkMGRlMzIyYmE5ZDdlNWZjMzgyNzMyOGQzYmRjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjI2OCwxMCArMjI2
OCwxMyBAQAogCQk1M0VEM0ZERjE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdz
R2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0VEM0ZERDE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVk
LmggKi87IH07CiAJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkEx
NjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJCTUzRUY3NjZDMTY1
MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2NkExNjUzMEE2MTAw
NENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CisJCTU1MDEzRUQ5MUNDMUFDODMwMEQ0
NTFFMiAvKiBJbWFnZUZyYW1lRGF0YUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1MDEzRUQ4MUNDMUFDODMwMEQ0NTFFMiAvKiBJbWFnZUZyYW1l
RGF0YUNHLmNwcCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1
NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1Qjg3
RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1Qjg3
RUQxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyog
SW1hZ2VEZWNvZGVyQ0cuaCAqLzsgfTsKKwkJNTU3RDYwNzAxQ0MxN0M2RjAwREQxMjkxIC8qIElt
YWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1N0Q2MDZFMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgKi87
IH07CisJCTU1N0Q2MDcxMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU3RDYwNkYxQ0MxN0M2
RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVs
YXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJ
NTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlD
NjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4MDM3MTYxMUE2NkYwMEEwMEJB
RjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovOyB9
OwpAQCAtOTg0OCwxMCArOTg1MSwxMyBAQAogCQk1M0VEM0ZEQzE2N0E4OEU3MDA2NzYyRTYgLyog
SlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzRUQzRkREMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFs
U2V0dGluZ3NHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJ
bnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5nc01hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1NTAxM0VEODFDQzFBQzgzMDBENDUxRTIgLyogSW1hZ2VGcmFtZURhdGFD
Ry5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lRGF0
YUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAw
NzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTVCODdFQTFD
QUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU3RDYwNkUxQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdl
RnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
RnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU3RDYwNkYxQ0Mx
N0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGlj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGljay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyog
U2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4MTAs
NiArMjE4MTYsNyBAQAogCQkJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNHLmNw
cCAqLywKIAkJCQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3Bw
ICovLAogCQkJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICov
LAorCQkJCTU1MDEzRUQ4MUNDMUFDODMwMEQ0NTFFMiAvKiBJbWFnZUZyYW1lRGF0YUNHLmNwcCAq
LywKIAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oICovLAog
CQkJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFjLm1tICovLAog
CQkJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCAqLywKQEAgLTIx
OTcxLDYgKzIxOTc4LDggQEAKIAkJCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1NTkgLyogSW1hZ2VC
dWZmZXIuY3BwICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZl
ci5oICovLAogCQkJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFnZUJ1ZmZlckRhdGEu
aCAqLywKKwkJCQk1NTdENjA2RTFDQzE3QzZGMDBERDEyOTEgLyogSW1hZ2VGcmFtZURhdGEuY3Bw
ICovLAorCQkJCTU1N0Q2MDZGMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5oICov
LAogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggKi8sCiAJ
CQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovLAog
CQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCkBA
IC0yNjgwMyw2ICsyNjgxMiw3IEBACiAJCQkJMDc2MzA2RTExN0UxNjA4OTAwNUE3QzRFIC8qIEpT
U291cmNlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE3RkVFQUQxNkE0RTc0QjAwNEMwQzMz
IC8qIEpTU3BlZWNoU3ludGhlc2lzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTJBNUFEMjE2QTQ4
NjBBMDA5NzZBMjUgLyogSlNTcGVlY2hTeW50aGVzaXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTU3RDYwNzExQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBQTdGRUVBNzE2QTRFNkYzMDA0QzBDMzMgLyogSlNTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBN0ZFRUE5MTZBNEU2RjMwMDRDMEMzMyAv
KiBKU1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgyNDMyOTBE
MENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDczOCw2
ICszMDc0OCw3IEBACiAJCQkJRTQ0NjE0MUEwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxNjE4ODMyMkVCMDBDOTU0QjUgLyogSlNU
b3VjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxODE4ODMyMkVCMDBDOTU0QjUgLyog
SlNUb3VjaEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU1N0Q2MDcwMUNDMTdDNkYwMERE
MTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxQTE4
ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcw
MzM0RTkxNDVBMUYzNjAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMwODk0LDYgKzMwOTA1LDcgQEAKIAkJCQlGQUJFNzJGNjEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGQUJFNzJGODEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDVEOTEzQ0VFQUIyQTYwNTM0MjE4QUNGIC8qIE1hdGhNTE1lbmNs
b3NlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NTAxM0VEOTFDQzFBQzgzMDBENDUx
RTIgLyogSW1hZ2VGcmFtZURhdGFDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGQUJFNzJGRTEw
NTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5
MDQ2REYxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRUQ0ODM5MENFRDY2QzMyNTVGNzJDNTkgLyogTWF0aE1MU2VsZWN0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA3Yzc4ZDM2NWMxYTQwMmU2ZWMxOTRiNzcy
ZjU1YTllZGJkNmNkZTMzLi5lZGYwMDMzMTE3NmUxM2U1NjU1Y2QyMDYxODhhZGRmMDU1OTdmMjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCkBAIC02MCw4ICs2MCw2IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlcikKICAgICAsIG1fcHJvZ3Jlc3NpdmVMb2FkQ2h1bmtUaW1lKDApCiAgICAg
LCBtX3Byb2dyZXNzaXZlTG9hZENodW5rQ291bnQoMCkKICNlbmRpZgotICAgICwgbV9pc1NvbGlk
Q29sb3IoZmFsc2UpCi0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZhbHNlKQogICAgICwg
bV9hbmltYXRpb25GaW5pc2hlZChmYWxzZSkKICAgICAsIG1fYWxsRGF0YVJlY2VpdmVkKGZhbHNl
KQogICAgICwgbV9oYXZlU2l6ZShmYWxzZSkKQEAgLTcxLDYgKzY5LDMyIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1fYW5pbWF0aW9u
RmluaXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKIH0KKyAgICAKK0JpdG1hcEltYWdlOjpC
aXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKKyAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9jdXJyZW50RnJhbWUoMCkKKyAgICAs
IG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQorICAgICwgbV9yZXBldGl0aW9uQ291
bnRTdGF0dXMoVW5rbm93bikKKyAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQorICAgICwg
bV9kZWNvZGVkU2l6ZSgwKQorICAgICwgbV9kZWNvZGVkUHJvcGVydGllc1NpemUoMCkKKyAgICAs
IG1fZnJhbWVDb3VudCgxKQorICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQorICAgICwg
bV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKKyAgICAsIG1faGF2ZVNpemUodHJ1ZSkKKyAgICAsIG1f
c2l6ZUF2YWlsYWJsZSh0cnVlKQorICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQoreworICAg
IG1fZnJhbWVzLmdyb3coMSk7CisgICAgbV9mcmFtZXNbMF0gPSBJbWFnZUZyYW1lRGF0YShpbWFn
ZSk7CisgICAgCisgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgorICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KKyAgICBtX3NpemUgPSBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX2ZyYW1lc1sw
XS5zaXplKCk7CisgICAgbV9kZWNvZGVkU2l6ZSA9IG1fZnJhbWVzWzBdLmZyYW1lQnl0ZXMoKTsK
KyAgICAKKyAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKK30KIAogQml0bWFwSW1hZ2U6On5CaXRt
YXBJbWFnZSgpCiB7CkBAIC05OCw3ICsxMjIsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5z
aXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRl
eF0ubV9pbWFnZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmltYWdlKCk7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTExOCw4
ICsxNDIsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsKQogICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBmcmFtZSBpc24ndCBhY3R1YWxseSBj
aGFuZ2luZyAod2UncmUganVzdCB0cnlpbmcgdG8KICAgICAgICAgLy8gc2F2ZSB0aGUgbWVtb3J5
IGZvciB0aGUgZnJhbWVidWZmZXIgZGF0YSksIHNvIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIKICAg
ICAgICAgLy8gdGhlIG1ldGFkYXRhLgotICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9m
cmFtZXNbaV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoZmFs
c2UpKQorICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9mcmFtZXNbaV0uZnJhbWVCeXRl
cygpOworICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoQ2FjaGVNZXRhZGF0YSkpCiAgICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOwogICAgIH0KIApAQCAtMTQ0
LDcgKzE2OCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNz
YXJ5KGJvb2wgZGVzdHJveUFsbCkKIAogICAgIHVuc2lnbmVkIGFsbEZyYW1lQnl0ZXMgPSAwOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IGFsbEZyYW1lQnl0ZXMgKz0gbV9mcmFtZXNbaV0ubV9mcmFtZUJ5dGVzOworICAgICAgICBhbGxG
cmFtZUJ5dGVzICs9IG1fZnJhbWVzW2ldLmZyYW1lQnl0ZXMoKTsKIAogICAgIGlmIChhbGxGcmFt
ZUJ5dGVzID4gbGFyZ2VBbmltYXRpb25DdXRvZmYpCiAgICAgICAgIGRlc3Ryb3lEZWNvZGVkRGF0
YShkZXN0cm95QWxsKTsKQEAgLTE1Miw4ICsxNzYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwpCiAKIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeSh1bnNpZ25lZCBmcmFtZUJ5dGVzQ2xlYXJl
ZCwgQ2xlYXJlZFNvdXJjZSBjbGVhcmVkU291cmNlKQogewotICAgIG1faXNTb2xpZENvbG9yID0g
ZmFsc2U7Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IGZhbHNlOworICAgIG1fc29saWRD
b2xvciA9IE51bGxvcHQ7CiAgICAgaW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogCiAgICAgQVNT
RVJUKG1fZGVjb2RlZFNpemUgPj0gZnJhbWVCeXRlc0NsZWFyZWQpOwpAQCAtMTc3LDI5ICsyMDAs
MTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwg
bnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBpZiAo
ZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1l
c1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxp
bmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgICAgIGlmIChudW1GcmFtZXMgPT0gMSAm
JiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgICAgIGNoZWNrRm9yU29saWRDb2xv
cigpOwotICAgIH0KLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0aW9uID0gbV9zb3Vy
Y2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXZl
TWV0YWRhdGEgPSB0cnVlOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2lzQ29tcGxldGUgPSBtX3Nv
dXJjZS5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKLQotICAgIGlmIChyZXBldGl0aW9u
Q291bnQoZmFsc2UpICE9IGNBbmltYXRpb25Ob25lKQotICAgICAgICBtX2ZyYW1lc1tpbmRleF0u
bV9kdXJhdGlvbiA9IG1fc291cmNlLmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKLQotICAg
IG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoaW5kZXgpOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5m
cmFtZUJ5dGVzQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBjb25zdCBJ
bnRTaXplIGZyYW1lU2l6ZShpbmRleCA/IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwpIDogbV9zaXplKTsKLSAgICBpZiAoIXN1YnNhbXBsaW5nTGV2ZWwg
JiYgZnJhbWVTaXplICE9IG1fc2l6ZSkKKyAgICBtX2ZyYW1lc1tpbmRleF0gPSBtX3NvdXJjZS5j
cmVhdGVGcmFtZURhdGFBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBmcmFtZUNhY2hp
bmcpOworICAgIAorICAgIGlmIChpbmRleCAmJiBtX2ZyYW1lc1tpbmRleF0uc2l6ZSgpICE9IG1f
c2l6ZSkKICAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7CiAKLSAgICBpZiAo
bV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpIHsKLSAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZl
Q2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOworICAgIGlmIChtX2ZyYW1l
c1tpbmRleF0uaGFzSW1hZ2UoKSkgeworICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0
PGludD4obV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSk7CiAgICAgICAgIG1fZGVjb2RlZFNp
emUgKz0gZGVsdGFCeXRlczsKICAgICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2ls
bCBzdWJzdW1lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVzZWQKICAgICAgICAgLy8gdG8g
ZGV0ZXJtaW5lIGltYWdlIHByb3BlcnRpZXMuCkBAIC0yODgsMTcgKzI5NSwxNiBAQCBib29sIEJp
dG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8g
Tk9URTogRG9uJ3QgY2FsbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxs
IHRyeSB0bwogICAgICAgICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29k
ZWQgb3IKICAgICAgICAgLy8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAg
ICAgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAg
ICAgICAgaWYgKG1fZnJhbWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lz
Q29tcGxldGUpCi0gICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0u
Y2xlYXIodHJ1ZSkgPyBmcmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChtX2ZyYW1lc1tpXS5o
YXNNZXRhZGF0YSgpICYmICFtX2ZyYW1lc1tpXS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAgICBm
cmFtZUJ5dGVzQ2xlYXJlZCArPSBtX2ZyYW1lc1tpXS5jbGVhcihDYWNoZU5vbmUpOwogICAgIH0K
ICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRT
b3VyY2U6Ok5vKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBm
b3IgaU9TPwogICAgIGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1w
dHkoKSkgewotICAgICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAx
XS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAx
XS5jbGVhcih0cnVlKSkgeworICAgICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5z
aXplKCkgLSAxXS5mcmFtZUJ5dGVzKCk7CisgICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5z
aXplKCkgLSAxXS5jbGVhcihDYWNoZU5vbmUpKSB7CiAgICAgICAgICAgICBkZWx0YUJ5dGVzICs9
IGJ5dGVzOwogICAgICAgICAgICAgZGVsdGFCeXRlcyArPSBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6
ZTsKICAgICAgICAgICAgIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplID0gMDsKQEAgLTM2OCw4ICsz
NzQsOCBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRl
eCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8IChmcmFtZUNhY2hp
bmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkK
LSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSAmJiAhbV9mcmFt
ZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBD
YWNoZU1ldGFkYXRhQW5kSW1hZ2UgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAg
ICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4
XS5oYXNNZXRhZGF0YSgpKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCwgZnJhbWVDYWNo
aW5nKTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzg0LDEwICszOTAsOSBAQCBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBw
cmVzZW50YXRpb25TYwogCiAgICAgLy8gV2UgbWF5IGhhdmUgY2FjaGVkIGEgZnJhbWUgd2l0aCBh
IGhpZ2hlciBzdWJzYW1wbGluZyBsZXZlbCwgaW4gd2hpY2ggY2FzZSB3ZSBuZWVkIHRvCiAgICAg
Ly8gcmUtZGVjb2RlIHdpdGggYSBsb3dlciBsZXZlbC4KLSAgICBpZiAoaW5kZXggPCBtX2ZyYW1l
cy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UgJiYgc3Vic2FtcGxpbmdMZXZlbCA8
IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpIHsKKyAgICBpZiAoaW5kZXggPCBt
X2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdlKCkgJiYgc3Vic2FtcGxp
bmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5zdWJzYW1wbGluZ0xldmVsKCkpIHsKICAgICAgICAg
Ly8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2FjaGVkLCBidXQgYXQgdG9vIHNtYWxsIGEgc2l6
ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24uCi0gICAgICAgIGludCBzaXplQ2hhbmdlID0g
LW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5j
bGVhcih0cnVlKTsKKyAgICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLmNs
ZWFyKENhY2hlTm9uZSk7CiAgICAgICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKICAgICAg
ICAgbV9kZWNvZGVkU2l6ZSArPSBzaXplQ2hhbmdlOwogICAgICAgICBpZiAoaW1hZ2VPYnNlcnZl
cigpKQpAQCAtMzk1LDI2ICs0MDAsMjYgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2MKICAgICB9
CiAKICAgICAvLyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBmcmFtZSB5ZXQsIGRvIHNvLgotICAg
IGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
KQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBDYWNoZU1ldGFk
YXRhQW5kRnJhbWUpOworICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJh
bWVzW2luZGV4XS5oYXNJbWFnZSgpKQorICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5kSW1hZ2UpOwogCi0gICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKIH0K
IAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgp
CiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25s
eSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2lz
Q29tcGxldGU7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pc0NvbXBsZXRlKCk7CiB9CiAK
IGZsb2F0IEJpdG1hcEltYWdlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkp
CisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247
CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5kdXJhdGlvbigpOwogfQogCiBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQpAQCAtNDI0LDEx
ICs0MjksMTEgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkKIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6
ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVN
ZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVN
ZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4
XS5tX2hhdmVNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2hhc0Fs
cGhhOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0
dXJuIG1fZnJhbWVzW2luZGV4XS5oYXNBbHBoYSgpOwogCiAgICAgcmV0dXJuIG1fc291cmNlLmZy
YW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKIH0KQEAgLTQ0MCwxMSArNDQ1LDExIEBAIGJvb2wg
Qml0bWFwSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiAKIEltYWdlT3JpZW50
YXRpb24gQml0bWFwSW1hZ2U6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5
KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGEpKQog
ICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOwogCi0gICAgaWYgKG1fZnJhbWVzW2lu
ZGV4XS5tX2hhdmVNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX29y
aWVudGF0aW9uOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkKKyAgICAg
ICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5vcmllbnRhdGlvbigpOwogCiAgICAgcmV0dXJuIG1f
c291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CiB9CkBAIC02NjcsMTkgKzY3Miw0MCBA
QCBib29sIEJpdG1hcEltYWdlOjppbnRlcm5hbEFkdmFuY2VBbmltYXRpb24oQW5pbWF0aW9uQWR2
YW5jZW1lbnQgYWR2YW5jZW1lbnQpCiAKICAgICByZXR1cm4gYWR2YW5jZWRBbmltYXRpb247CiB9
CisgICAgCit2b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQoreworICAgIG1f
c29saWRDb2xvciA9IENvbG9yKCk7CisgICAgCisgICAgaWYgKGZyYW1lQ291bnQoKSAhPSAxKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIShlbnN1cmVGcmFtZUlzQ2FjaGVkKDAsIENhY2hl
TWV0YWRhdGEpICYmIG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1swXS5oYXNNZXRhZGF0YSgp
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZnJhbWVzWzBdLnNpemUoKSAhPSBJbnRT
aXplKDEsIDEpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIShlbnN1cmVGcmFtZUlzQ2Fj
aGVkKDAsIENhY2hlTWV0YWRhdGFBbmRJbWFnZSkgJiYgbV9mcmFtZXNbMF0uaGFzSW1hZ2UoKSkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fc29saWRDb2xvciA9IG1fZnJhbWVzWzBdLnNvbGlk
Q29sb3IoKTsKK30KIAogYm9vbCBCaXRtYXBJbWFnZTo6bWF5RmlsbFdpdGhTb2xpZENvbG9yKCkK
IHsKLSAgICBpZiAoIW1fY2hlY2tlZEZvclNvbGlkQ29sb3IgJiYgZnJhbWVDb3VudCgpID4gMCkg
eworICAgIGlmIChmcmFtZUNvdW50KCkgIT0gMSB8fCBtX2N1cnJlbnRGcmFtZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghbV9zb2xpZENvbG9yKQogICAgICAgICBjaGVj
a0ZvclNvbGlkQ29sb3IoKTsKLSAgICAgICAgQVNTRVJUKG1fY2hlY2tlZEZvclNvbGlkQ29sb3Ip
OwotICAgIH0KLSAgICByZXR1cm4gbV9pc1NvbGlkQ29sb3IgJiYgIW1fY3VycmVudEZyYW1lOwor
ICAgIAorICAgIHJldHVybiBzb2xpZENvbG9yKCkuaXNWYWxpZCgpOwogfQogCiBDb2xvciBCaXRt
YXBJbWFnZTo6c29saWRDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc29saWRDb2xvcjsK
KyAgICByZXR1cm4gbV9zb2xpZENvbG9yID8gbV9zb2xpZENvbG9yLnZhbHVlKCkgOiBDb2xvcigp
OwogfQogICAgIAogYm9vbCBCaXRtYXBJbWFnZTo6Y2FuQW5pbWF0ZSgpCkBAIC02OTksOCArNzI1
LDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50LWZyYW1lIiwgbV9jdXJyZW50RnJhbWUpOwogICAg
IH0KICAgICAKLSAgICBpZiAobV9pc1NvbGlkQ29sb3IpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgic29saWQtY29sb3IiLCBtX2lzU29saWRDb2xvcik7CisgICAgaWYgKG1fc29saWRDb2xvcikK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzb2xpZC1jb2xvciIsIG1fc29saWRDb2xvci52YWx1
ZSgpKTsKICAgICAKICAgICBtX3NvdXJjZS5kdW1wKHRzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDdjOGVjYWNmYzZjNjFjOTQ0
NGQ2MWFkZDRlMjc5NzZjYjIwMjFkNTAuLmViYTMzN2FiZDk0YzQzZTk3NmNmNmNhMzhlZjE1ZTI1
NWMxYmMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMjgsOCArMjgsOSBAQAogI2lmbmRlZiBCaXRtYXBJbWFnZV9oCiAjZGVmaW5l
IEJpdG1hcEltYWdlX2gKIAotI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIK
KyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVk
ZSAiSW50U2l6ZS5oIgpAQCAtNjAsNDYgKzYxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBUaW1lcjsKIAotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0vLyBGcmFtZURhdGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsKLXB1YmxpYzoK
LSAgICBGcmFtZURhdGEoKQotICAgICAgICA6IG1fb3JpZW50YXRpb24oRGVmYXVsdEltYWdlT3Jp
ZW50YXRpb24pCi0gICAgICAgICwgbV9zdWJzYW1wbGluZ0xldmVsKDApCi0gICAgICAgICwgbV9k
dXJhdGlvbigwKQotICAgICAgICAsIG1faGF2ZU1ldGFkYXRhKGZhbHNlKQotICAgICAgICAsIG1f
aXNDb21wbGV0ZShmYWxzZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKHRydWUpCi0gICAgICAgICwg
bV9mcmFtZUJ5dGVzKDApCi0gICAgewotICAgIH0KLQotICAgIH5GcmFtZURhdGEoKQotICAgIHsg
Ci0gICAgICAgIGNsZWFyKHRydWUpOwotICAgIH0KLQotICAgIC8vIENsZWFyIHRoZSBjYWNoZWQg
aW1hZ2UgZGF0YSBvbiB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRhLgot
ICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8gY2xl
YXIuCi0gICAgYm9vbCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwotCi0gICAgTmF0aXZlSW1h
Z2VQdHIgbV9pbWFnZTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247Ci0gICAg
U3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgZmxvYXQgbV9kdXJhdGlv
bjsKLSAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKLSAgICBib29sIG1faXNDb21wbGV0ZSA6
IDE7Ci0gICAgYm9vbCBtX2hhc0FscGhhIDogMTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lQnl0ZXM7
Ci19OwotCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0vLyBCaXRtYXBJbWFnZSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotCiBjbGFzcyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1Ymxp
YyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBj
bGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTsKQEAgLTIyMSwxMSArMTgyLDEwIEBAIHByb3Rl
Y3RlZDoKICAgICBJbWFnZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVf
dCk7CiAKICAgICAvLyBEZWNvZGVzIGFuZCBjYWNoZXMgYSBmcmFtZS4gTmV2ZXIgYWNjZXNzZWQg
ZXhjZXB0IGludGVybmFsbHkuCi0gICAgZW51bSBJbWFnZUZyYW1lQ2FjaGluZyB7IENhY2hlTWV0
YWRhdGFPbmx5LCBDYWNoZU1ldGFkYXRhQW5kRnJhbWUgfTsKLSAgICB2b2lkIGNhY2hlRnJhbWUo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hl
TWV0YWRhdGFBbmRGcmFtZSk7CisgICAgdm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kSW1hZ2Up
OwogCiAgICAgLy8gQ2FsbGVkIGJlZm9yZSBhY2Nlc3NpbmcgbV9mcmFtZXNbaW5kZXhdIGZvciBp
bmZvIHdpdGhvdXQgZGVjb2RpbmcuIFJldHVybnMgZmFsc2Ugb24gaW5kZXggb3V0IG9mIGJvdW5k
cy4KLSAgICBib29sIGVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1l
Q2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7CisgICAgYm9vbCBlbnN1cmVGcmFtZUlz
Q2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5k
SW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIHRvIGludmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4g
fGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUgb3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFt
ZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGltYWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0y
NzIsOCArMjMyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW52YWxpZGF0ZVBsYXRmb3JtRGF0
YSgpOwogCiAgICAgLy8gQ2hlY2tzIHRvIHNlZSBpZiB0aGUgaW1hZ2UgaXMgYSAxeDEgc29saWQg
Y29sb3IuIFdlIG9wdGltaXplIHRoZXNlIGltYWdlcyBhbmQganVzdCBkbyBhIGZpbGwgcmVjdCBp
bnN0ZWFkLgotICAgIC8vIFRoaXMgY2hlY2sgc2hvdWxkIGhhcHBlbiByZWdhcmRsZXNzIHdoZXRo
ZXIgbV9jaGVja2VkRm9yU29saWRDb2xvciBpcyBhbHJlYWR5IHNldCwgYXMgdGhlIGZyYW1lIG1h
eSBoYXZlCi0gICAgLy8gY2hhbmdlZC4KKyAgICAvLyBUaGlzIGNoZWNrIHNob3VsZCBoYXBwZW4g
cmVnYXJkbGVzcyB3aGV0aGVyIG1fc29saWRDb2xvciBpcyBhbHJlYWR5IHNldCwgYXMgdGhlIGZy
YW1lIG1heSBoYXZlIGNoYW5nZWQuCiAgICAgdm9pZCBjaGVja0ZvclNvbGlkQ29sb3IoKTsKIAog
ICAgIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgb3ZlcnJpZGU7CkBAIC0yOTQsNyArMjUz
LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGluZ09yaWVu
dGF0aW9uOwogCiAgICAgc2l6ZV90IG1fY3VycmVudEZyYW1lOyAvLyBUaGUgaW5kZXggb2YgdGhl
IGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgotICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+IG1f
ZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9u
LiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgorICAgIFZl
Y3RvcjxJbWFnZUZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNo
ZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4g
dGhlbSBpbiB0aGUgY2FjaGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJhbWVU
aW1lcjsKICAgICBpbnQgbV9yZXBldGl0aW9uQ291bnQ7IC8vIEhvdyBtYW55IHRvdGFsIGFuaW1h
dGlvbiBsb29wcyB3ZSBzaG91bGQgZG8uIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0
aGlzIGltYWdlIHR5cGUgaXMgaW5jYXBhYmxlIG9mIGFuaW1hdGlvbi4KQEAgLTMwOSw3ICsyNjgs
NyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmV0YWluUHRyPENGRGF0YVJlZj4gbV90aWZmUmVw
OyAvLyBDYWNoZWQgVElGRiByZXAgZm9yIGZyYW1lIDAuIE9ubHkgYnVpbHQgbGF6aWx5IGlmIHNv
bWVvbmUgcXVlcmllcyBmb3Igb25lLgogI2VuZGlmCiAKLSAgICBDb2xvciBtX3NvbGlkQ29sb3I7
ICAvLyBJZiB3ZSdyZSBhIDF4MSBzb2xpZCBjb2xvciwgdGhpcyBpcyB0aGUgY29sb3IgdG8gdXNl
IHRvIGZpbGwuCisgICAgT3B0aW9uYWw8Q29sb3I+IG1fc29saWRDb2xvcjsgLy8gSWYgd2UncmUg
YSAxeDEgc29saWQgY29sb3IsIHRoaXMgaXMgdGhlIGNvbG9yIHRvIHVzZSB0byBmaWxsLgogCiAg
ICAgdW5zaWduZWQgbV9kZWNvZGVkU2l6ZTsgLy8gVGhlIGN1cnJlbnQgc2l6ZSBvZiBhbGwgZGVj
b2RlZCBmcmFtZXMuCiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6
ZTsgLy8gVGhlIHNpemUgb2YgZGF0YSBkZWNvZGVkIGJ5IHRoZSBzb3VyY2UgdG8gZGV0ZXJtaW5l
IGltYWdlIHByb3BlcnRpZXMgKGUuZy4gc2l6ZSwgZnJhbWUgY291bnQsIGV0YykuCkBAIC0zMjAs
OSArMjc5LDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9wcm9ncmVzc2l2ZUxvYWRDaHVua1Rp
bWU7CiAgICAgdWludDE2X3QgbV9wcm9ncmVzc2l2ZUxvYWRDaHVua0NvdW50OwogI2VuZGlmCi0g
ICAgYm9vbCBtX2lzU29saWRDb2xvciA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlIGFyZSBhIDF4
MSBzb2xpZCBpbWFnZS4KLSAgICBib29sIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgOiAxOyAvLyBX
aGV0aGVyIHdlJ3ZlIGNoZWNrZWQgdGhlIGZyYW1lIGZvciBzb2xpZCBjb2xvci4KLQogICAgIGJv
b2wgbV9hbmltYXRpb25GaW5pc2hlZCA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IHdlJ3ZlIGNvbXBs
ZXRlZCB0aGUgZW50aXJlIGFuaW1hdGlvbi4KIAogICAgIGJvb2wgbV9hbGxEYXRhUmVjZWl2ZWQg
OiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSd2ZSByZWNlaXZlZCBhbGwgb3VyIGRhdGEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzdmODM1ZmYzYjY3ZDhhMDRmODkzZGRjY2ZlODQ2N2E4YTFmZDlhZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWVEYXRhLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUZy
YW1lRGF0YS5oIgorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCisj
ZWxzZQorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YSgpCit7Cit9CisKK0lt
YWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
CisgICAgOiBtX3N0YXR1cyhGcmFtZUNvbXBsZXRlKQorICAgICwgbV9zaXplKEltYWdlRnJhbWVE
YXRhOjppbWFnZVNpemUoaW1hZ2UpKQorICAgICwgbV9pbWFnZShpbWFnZSkKKyAgICAsIG1faGFz
QWxwaGEoSW1hZ2VGcmFtZURhdGE6OmltYWdlQWxwaGEoaW1hZ2UpKQoreworfQorCitJbWFnZUZy
YW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoSW1hZ2VEZWNvZGVyJiBkZWNvZGVyLCBzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcg
ZnJhbWVDYWNoaW5nKQoreworICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgJiBDYWNoZU1ldGFkYXRh
KTsKKworICAgIGlmIChmcmFtZUNhY2hpbmcgJiBDYWNoZUltYWdlKSB7CisgICAgICAgIG1faW1h
Z2UgPSBkZWNvZGVyLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsKTsKKyAgICAgICAgbV9zdWJzYW1wbGluZ0xldmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKKyAg
ICB9CisKKyAgICBpZiAoZnJhbWVDYWNoaW5nICYgQ2FjaGVNZXRhZGF0YSkgeworICAgICAgICBt
X29yaWVudGF0aW9uID0gZGVjb2Rlci5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOworICAgICAg
ICBtX3N0YXR1cyA9IGRlY29kZXIuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkgPyBGcmFt
ZUNvbXBsZXRlIDogRnJhbWVQYXJ0aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRlY29kZXIu
cmVwZXRpdGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBtX2R1cmF0
aW9uID0gZGVjb2Rlci5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisKKyAgICAgICAgbV9o
YXNBbHBoYSA9IGRlY29kZXIuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAgICAgICBt
X3NpemUgPSBkZWNvZGVyLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwp
OworICAgIH0KK30KKworSW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7CisgICAg
Y2xlYXJJbWFnZSgpOworfQorCit1bnNpZ25lZCBJbWFnZUZyYW1lRGF0YTo6Y2xlYXIoSW1hZ2VG
cmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQoreworICAgIEFTU0VSVCghKGZyYW1lQ2FjaGluZyAm
IENhY2hlSW1hZ2UpKTsKKworICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSB0aGlzLT5mcmFtZUJ5
dGVzKCk7CisKKyAgICBjbGVhckltYWdlKCk7CisKKyAgICBpZiAoZnJhbWVDYWNoaW5nID09IENh
Y2hlTm9uZSkKKyAgICAgICAgKnRoaXMgPSBJbWFnZUZyYW1lRGF0YSgpOworCisgICAgcmV0dXJu
IGZyYW1lQnl0ZXM7Cit9CisgICAgCitDb2xvciBJbWFnZUZyYW1lRGF0YTo6c29saWRDb2xvcigp
IGNvbnN0Cit7CisgICAgaWYgKG1fc2l6ZSAhPSBJbnRTaXplKDEsIDEpIHx8ICFoYXNJbWFnZSgp
KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gSW1hZ2VGcmFtZURh
dGE6OmltYWdlU29saWRDb2xvcihtX2ltYWdlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk2ZTll
ODhjMGJhNTExNDViNjFjNWQ1YmM4OGRiYzUwOWE0ZjI2OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKQEAgLTAsMCAr
MSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJbWFnZUZyYW1lRGF0YV9oCisjZGVmaW5lIEltYWdlRnJhbWVEYXRhX2gKKworI2lu
Y2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUg
IkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisvLyBTdWJzYW1wbGluZ0xl
dmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4
aXMgZXRjLgordHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOworCitjb25zdCBTdWJzYW1w
bGluZ0xldmVsIE1pblN1YnNhbXBsaW5nTGV2ZWwgPSAwOworY29uc3QgU3Vic2FtcGxpbmdMZXZl
bCBNYXhTdWJzYW1wbGluZ0xldmVsID0gMzsKK2NvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgRGVmYXVs
dFN1YnNhbXBsaW5nTGV2ZWwgPSBNaW5TdWJzYW1wbGluZ0xldmVsOworCitlbnVtIEltYWdlRnJh
bWVDYWNoaW5nIHsKKyAgICBDYWNoZU5vbmUsCisgICAgQ2FjaGVNZXRhZGF0YSwKKyAgICBDYWNo
ZUltYWdlLAorICAgIENhY2hlTWV0YWRhdGFBbmRJbWFnZQorfTsKKworZW51bSBJbWFnZUZyYW1l
U3RhdHVzIHsKKyAgICBGcmFtZUVtcHR5LAorICAgIEZyYW1lUGFydGlhbCwKKyAgICBGcmFtZUNv
bXBsZXRlCit9OworCitjbGFzcyBJbWFnZURlY29kZXI7CisKK2NsYXNzIEltYWdlRnJhbWVEYXRh
IHsKK3B1YmxpYzoKKyAgICBJbWFnZUZyYW1lRGF0YSgpOworICAgIEltYWdlRnJhbWVEYXRhKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJik7CisgICAgSW1hZ2VGcmFtZURhdGEoSW1hZ2VEZWNvZGVyJiwg
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWws
IEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEltYWdlKTsKKyAgICAKKyAgICB+
SW1hZ2VGcmFtZURhdGEoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjbGVhcihJbWFnZUZyYW1lQ2Fj
aGluZyk7CisgICAgQ29sb3Igc29saWRDb2xvcigpIGNvbnN0OworICAgIAorICAgIEltYWdlRnJh
bWVTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKyAgICBib29sIGlz
Q29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBGcmFtZUNvbXBsZXRlOyB9Cisg
ICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdW5zaWduZWQg
ZnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3NpemUuYXJlYSgpICog
NCA6IDA7IH0KKyAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2U7IH0KKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2FtcGxpbmdMZXZlbDsgfQorICAgIGZsb2F0IGR1
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQorICAgIAorICAgIGJvb2wgaGFz
QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2hhc0FscGhhOyB9CisgICAgYm9vbCBoYXNJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICBib29sIGhhc01ldGFkYXRhKCkgY29uc3Qg
eyByZXR1cm4gIW1fc2l6ZS5pc0VtcHR5KCk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBj
bGVhckltYWdlKCk7CisgICAgCisgICAgc3RhdGljIEludFNpemUgaW1hZ2VTaXplKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJik7CisgICAgc3RhdGljIGJvb2wgaW1hZ2VBbHBoYShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYpOworICAgIHN0YXRpYyBDb2xvciBpbWFnZVNvbGlkQ29sb3IoY29uc3QgTmF0aXZl
SW1hZ2VQdHImKTsKKyAgICAKKyAgICBJbWFnZUZyYW1lU3RhdHVzIG1fc3RhdHVzIHsgRnJhbWVF
bXB0eSB9OworICAgIEludFNpemUgbV9zaXplOworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7
CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdl
T3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7
IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9OworICAgIGJvb2wgbV9oYXNBbHBoYSB7
IHRydWUgfTsKK307CisgICAgCit9CisKKyNlbmRpZiAvLyBJbWFnZUZyYW1lRGF0YV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXgg
N2VkOWZkMWQwNzY3OTNkZmY0ZGY3Y2QyM2Q3N2Y1ODFiOGRhYTI4Yi4uYzEwOGNmMTExNTYyYzJl
YTkyMjE1ODM2OGZhNjY0YTA2NzU0MzRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjE0LDYgKzIxNCwxMSBAQCBOYXRpdmVJ
bWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGluZ0xldgogewogICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVy
LT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxs
cHRyOwogfQorICAgIAorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lRGF0
YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWws
IEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6
ZWQoKSA/IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
LCBmcmFtZUNhY2hpbmcpIDogSW1hZ2VGcmFtZURhdGEoKTsKK30KIAogdm9pZCBJbWFnZVNvdXJj
ZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGE4OTgwNzYxYjQ0MTcyYTY4ODMzNWFi
OTc5MGI4OTQ4ZDczMTAzZjkuLmFjMzYxZDc3N2UxMDIxZWQ5NGQ1ODc1YzZmYTQyMzFiOTk3MWIx
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBJbWFnZVNvdXJjZV9oCiAjZGVmaW5lIEltYWdl
U291cmNlX2gKIAorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VP
cmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1h
Z2VQdHIuaCIKQEAgLTYzLDkgKzY0LDYgQEAgY29uc3QgaW50IGNBbmltYXRpb25Mb29wT25jZSA9
IDA7CiBjb25zdCBpbnQgY0FuaW1hdGlvbkxvb3BJbmZpbml0ZSA9IC0xOwogY29uc3QgaW50IGNB
bmltYXRpb25Ob25lID0gLTI7CiAKLS8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAgaXMgbm8gc3Vic2Ft
cGxpbmcsIDEgaXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMuCi10eXBlZGVmIHNo
b3J0IFN1YnNhbXBsaW5nTGV2ZWw7Ci0KIGNsYXNzIEltYWdlU291cmNlIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbWFnZVNvdXJjZSk7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdl
OwpAQCAtMTI5LDE4ICsxMjcsMTkgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dTdWJzYW1wbGlu
Z09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgCiAgICAgLy8gU2l6ZSBvZiBvcHRp
b25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9
IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OworICAgIEludFNpemUgZnJhbWVT
aXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdM
ZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbikgY29uc3Q7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMg
aW4gdGhlIGRlY29kZWQgZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0CiAgICAgLy8gZGVj
b2RlZCB0aGVuIHJldHVybiAwLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApIGNvbnN0OworICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVs
KSBjb25zdDsKICAgICAKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwog
ICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8v
IEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KICAgICAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3Qg
Y2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OwogICAg
IC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAg
IE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJbWFnZUZyYW1lRGF0YSBj
cmVhdGVGcmFtZURhdGFBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRT
dWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRJbWFn
ZSk7CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCmluZGV4IDFmNGVlMjA3NjZjMTVkY2Q3ZTBhZTZjYmMw
ZDRiZDFjNzM0NTE2MDEuLmMyNDZjMmY1MzExMmZiZTYzMmJjZjk0ZGI2YjliN2QwMjUyNDJjYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCkBAIC0zOCwzMSArMzgsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiYmIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKLSAgICA6IEltYWdl
KG9ic2VydmVyKQotICAgICwgbV9zaXplKGNhaXJvU3VyZmFjZVNpemUobmF0aXZlSW1hZ2UuZ2V0
KCkpKQotICAgICwgbV9jdXJyZW50RnJhbWUoMCkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNB
bmltYXRpb25Ob25lKQotICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKLSAg
ICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQotICAgICwgbV9kZWNvZGVkU2l6ZShtX3NpemUu
d2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSAqIDQpCi0gICAgLCBtX2ZyYW1lQ291bnQoMSkKLSAg
ICAsIG1faXNTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihm
YWxzZSkKLSAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWQodHJ1ZSkKLSAgICAsIG1fYWxsRGF0YVJl
Y2VpdmVkKHRydWUpCi0gICAgLCBtX2hhdmVTaXplKHRydWUpCi0gICAgLCBtX3NpemVBdmFpbGFi
bGUodHJ1ZSkKLSAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKLXsKLSAgICBtX2ZyYW1lcy5n
cm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEgPSBjYWlyb19zdXJmYWNlX2dldF9j
b250ZW50KG5hdGl2ZUltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwotICAgIG1f
ZnJhbWVzWzBdLm1faW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKTsKLSAgICBtX2ZyYW1lc1sw
XS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0KLSAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKLX0K
LQogdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
IGRlc2NyaXB0aW9uKQogewpAQCAtMTIxLDQ0ICs5Niw2IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3Qg
RmxvCiAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKIH0KIAotdm9pZCBC
aXRtYXBJbWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKLXsKLSAgICBtX2lzU29saWRDb2xvciA9
IGZhbHNlOwotICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVlOwotCi0gICAgaWYgKGZy
YW1lQ291bnQoKSA+IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gc3VyZmFjZSA9IGZy
YW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICBpZiAoIXN1cmZhY2UpIC8vIElm
IGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNlLmdldCgpKSAhPSBD
QUlST19TVVJGQUNFX1RZUEVfSU1BR0UpCi0gICAgICAgIHJldHVybjsKLQotICAgIEludFNpemUg
c2l6ZSA9IGNhaXJvU3VyZmFjZVNpemUoc3VyZmFjZS5nZXQoKSk7Ci0KLSAgICBpZiAoc2l6ZS53
aWR0aCgpICE9IDEgfHwgc2l6ZS5oZWlnaHQoKSAhPSAxKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICB1bnNpZ25lZCogcGl4ZWxDb2xvciA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHVuc2lnbmVkKj4o
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlLmdldCgpKSk7Ci0gICAgbV9zb2xp
ZENvbG9yID0gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29sb3IpOwotCi0gICAg
bV9pc1NvbGlkQ29sb3IgPSB0cnVlOwotfQotCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBj
bGVhck1ldGFkYXRhKQotewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAgICAgICBtX2hhdmVN
ZXRhZGF0YSA9IGZhbHNlOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSAgICAgICAgbV9pbWFnZSA9
IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDQUlSTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRnJh
bWVEYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VGcmFtZURhdGFDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFmZWJkZGZmYjlhMjdjZTBhOWQ0
YjY1NDUzNjI3OGNjZTBmYzliYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRnJhbWVEYXRhQ2Fpcm8uY3BwCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCisKKyNpZiBVU0Uo
Q0FJUk8pCisKKyNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgSW1hZ2VGcmFtZURhdGE6OmNsZWFySW1hZ2UoKQoreworICAgIG1faW1hZ2Ug
PSBudWxscHRyOworfQorCitJbnRTaXplIEltYWdlRnJhbWVEYXRhOjppbWFnZVNpemUoY29uc3Qg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQoreworICAgIHJldHVybiBpbWFnZSA/IGNh
aXJvU3VyZmFjZVNpemUoaW1hZ2UuZ2V0KCkpIDogSW50U2l6ZSgpOworfQorCitib29sIEltYWdl
RnJhbWVEYXRhOjppbWFnZUFscGhhKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiBpbWFn
ZSkKK3sKKyAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChpbWFnZS5nZXQoKSkg
IT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKK30KKworQ29sb3IgSW1hZ2VGcmFtZURhdGE6OmltYWdl
U29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCit7CisgICAg
aWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0Vf
VFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBJbnRTaXplIHNpemUg
PSBjYWlyb1N1cmZhY2VTaXplKGltYWdlLmdldCgpKTsKKworICAgIGlmIChzaXplLndpZHRoKCkg
IT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCisgICAgICAgIHJldHVybiBDb2xvcigpOworCisg
ICAgdW5zaWduZWQqIHBpeGVsQ29sb3IgPSByZWludGVycHJldF9jYXN0X3B0cjx1bnNpZ25lZCo+
KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoaW1hZ2UuZ2V0KCkpKTsKKyAgICByZXR1cm4g
Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsQ29sb3IpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IDY5MzJh
MTJmZGY4YzExOGRkYjI0Yzg5MjdjZWM1Y2YxZmQ2NWViYmEuLjVmMWJiYjY3MTBmZmU2MTkwNmEz
YzNmOTMxZWRlMTdlNmViZWM3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC01MCwxMDAgKzUwLDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1l
dGFkYXRhKQotewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAgICAgICBtX2hhdmVNZXRhZGF0
YSA9IGZhbHNlOwotCi0gICAgbV9zdWJzYW1wbGluZ0xldmVsID0gMDsKLQotICAgIGlmIChtX2lt
YWdlKSB7Ci0jaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVh
ckltYWdlKG1faW1hZ2UuZ2V0KCkpOwotI2VuZGlmCi0gICAgICAgIG1faW1hZ2UgPSBudWxscHRy
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1C
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UsIElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQotICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX2N1
cnJlbnRGcmFtZSgwKQotICAgICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCi0g
ICAgLCBtX3JlcGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3duKQotICAgICwgbV9yZXBldGl0aW9u
c0NvbXBsZXRlKDApCi0gICAgLCBtX2RlY29kZWRTaXplKDApCi0gICAgLCBtX2RlY29kZWRQcm9w
ZXJ0aWVzU2l6ZSgwKQotICAgICwgbV9mcmFtZUNvdW50KDEpCi0gICAgLCBtX2lzU29saWRDb2xv
cihmYWxzZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2Fu
aW1hdGlvbkZpbmlzaGVkKHRydWUpCi0gICAgLCBtX2FsbERhdGFSZWNlaXZlZCh0cnVlKQotICAg
ICwgbV9oYXZlU2l6ZSh0cnVlKQotICAgICwgbV9zaXplQXZhaWxhYmxlKHRydWUpCi0gICAgLCBt
X2hhdmVGcmFtZUNvdW50KHRydWUpCi17Ci0gICAgQ0dGbG9hdCB3aWR0aCA9IENHSW1hZ2VHZXRX
aWR0aChpbWFnZS5nZXQoKSk7Ci0gICAgQ0dGbG9hdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0
KGltYWdlLmdldCgpKTsKLSAgICBtX2RlY29kZWRTaXplID0gd2lkdGggKiBoZWlnaHQgKiA0Owot
ICAgIG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7Ci0KLSAgICAvLyBTaW5jZSB3ZSBk
b24ndCBoYXZlIGEgZGVjb2Rlciwgd2UgY2FuJ3QgZmlndXJlIG91dCB0aGUgaW1hZ2Ugb3JpZW50
YXRpb24uCi0gICAgLy8gU2V0IG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiB0byBiZSB0aGUg
c2FtZSBhcyBtX3NpemUgc28gaXQncyBub3QgMHgwLgotICAgIG1fc2l6ZVJlc3BlY3RpbmdPcmll
bnRhdGlvbiA9IG1fc2l6ZTsKLQotICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNb
MF0ubV9pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1faGFzQWxwaGEg
PSB0cnVlOwotICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLQotICAgIGNo
ZWNrRm9yU29saWRDb2xvcigpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlk
Q29sb3IoKQotewotICAgIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgPSB0cnVlOwotICAgIG1faXNT
b2xpZENvbG9yID0gZmFsc2U7Ci0KLSAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKCFoYXZlRnJhbWVJbWFnZUF0SW5kZXgoMCkpIHsKLSAgICAgICAg
SW50U2l6ZSBzaXplID0gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleCgwLCAwKTsKLSAgICAgICAg
aWYgKHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoMCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IG51bGxwdHI7Ci0g
ICAgaWYgKG1fZnJhbWVzLnNpemUoKSkKLSAgICAgICAgaW1hZ2UgPSBtX2ZyYW1lc1swXS5tX2lt
YWdlLmdldCgpOwotCi0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
Q3VycmVudGx5IHdlIG9ubHkgY2hlY2sgZm9yIHNvbGlkIGNvbG9yIGluIHRoZSBpbXBvcnRhbnQg
c3BlY2lhbCBjYXNlIG9mIGEgMXgxIGltYWdlLgotICAgIGlmIChDR0ltYWdlR2V0V2lkdGgoaW1h
Z2UpID09IDEgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gMSkgewotICAgICAgICB1bnNp
Z25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCi0gICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRS
ZWY+IGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwg
MSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwKLSAgICAgICAgICAg
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmln
KSk7Ci0gICAgICAgIGlmICghYml0bWFwQ29udGV4dCkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgR3JhcGhpY3NDb250ZXh0KGJpdG1hcENvbnRleHQuZ2V0KCkpLnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKLSAgICAgICAgQ0dSZWN0IGRlc3RpbmF0aW9uUmVjdCA9
IENHUmVjdE1ha2UoMCwgMCwgMSwgMSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShiaXRt
YXBDb250ZXh0LmdldCgpLCBkZXN0aW5hdGlvblJlY3QsIGltYWdlKTsKLSAgICAgICAgaWYgKCFw
aXhlbFszXSkKLSAgICAgICAgICAgIG1fc29saWRDb2xvciA9IENvbG9yKDAsIDAsIDAsIDApOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcihwaXhlbFswXSAq
IDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1
NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Ci0KLSAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVl
OwotICAgIH0KLX0KLQogQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCiB7
CiAgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApLmdldCgpOwpAQCAtMjI5LDExICsxMzUs
MTEgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMu
c2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKKyAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKICAgICAgICAgY2Fj
aGVGcmFtZShpbmRleCwgMCk7CiAKLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBs
aW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKKyAgICBp
ZiAoIW1fZnJhbWVzW2luZGV4XS5zdWJzYW1wbGluZ0xldmVsKCkpCisgICAgICAgIHJldHVybiBt
X2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5jcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChpbmRleCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1lRGF0YUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRnJhbWVEYXRhQ0cuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjZmU0
MGNkM2M3M2I1OWU3ZjEzZjlmMDAzMzZhMzRlZDNlNWMyZDcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1lRGF0YUNHLmNwcApA
QCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCisK
KyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJDb3JlR3JhcGhpY3NTUEkuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIlN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEltYWdlRnJhbWVEYXRhOjpjbGVhckltYWdl
KCkKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkpCisgICAgICAgIHJldHVybjsKKyNpZiBDQUNIRV9T
VUJJTUFHRVMKKyAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ltYWdlLmdldCgpKTsK
KyNlbmRpZgorICAgIG1faW1hZ2UgPSBudWxscHRyOworfQorCitJbnRTaXplIEltYWdlRnJhbWVE
YXRhOjppbWFnZVNpemUoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKK3sKKyAg
ICByZXR1cm4gaW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA6IEludFNpemUoKTsKK30KKyAgICAKK2Jvb2wg
SW1hZ2VGcmFtZURhdGE6OmltYWdlQWxwaGEoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JikK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyAgICAKK0NvbG9yIEltYWdlRnJhbWVEYXRhOjppbWFn
ZVNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKK3sKKyAgICB1
bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCisgICAgUmV0YWluUHRyPENHQ29udGV4dFJl
Zj4gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAx
LCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAorICAgICAgICBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwor
CisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAg
IEdyYXBoaWNzQ29udGV4dChiaXRtYXBDb250ZXh0LmdldCgpKS5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlQ29weSk7CisgICAgQ0dSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IENHUmVjdE1h
a2UoMCwgMCwgMSwgMSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0
KCksIGRlc3RpbmF0aW9uUmVjdCwgaW1hZ2UuZ2V0KCkpOworICAgIGlmICghcGl4ZWxbM10pCisg
ICAgICAgIHJldHVybiBDb2xvcigwLCAwLCAwLCAwKTsKKworICAgIHJldHVybiBDb2xvcihwaXhl
bFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsy
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Cit9CisgICAgCit9CisKKyNlbmRpZiAvLyBV
U0UoQ0cpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276621</attachid>
            <date>2016-04-17 20:27:41 -0700</date>
            <delta_ts>2016-06-02 08:51:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160417202801.patch</filename>
            <type>text/plain</type>
            <size>57333</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFjMDM1MTAyMjA1NjUz
NjljOGM5MzkxOTllY2EyYzJhMWZhNGZjZS4uMDI3ZWQxZmRlZTMwOGJjMDk0YzgwODFjZWMxZWYy
MGI1MzM3YWRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxNi0wNC0xNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIFJlbmFt
ZSBGcmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFJlbmFtZSBGcmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBz
ZXBhcmF0ZSBmaWxlLiAKKyAgICAgICAgRG8gdGhlIGZvbGxvd2luZyBjbGVhbnVwOgorICAgICAg
ICAgICAgMS4gQ2FsY3VsYXRlIHRoZSBpbWFnZSBzb2xpZENvbG9yKCkgaW4gdGhlIEltYWdlRnJh
bWVEYXRhLgorICAgICAgICAgICAgMi4gUmVwbGFjZSBCaXRtYXBJbWFnZTo6bV9pc1NvbGlkQ29s
b3IsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3IgYW5kCisgICAgICAgICAgICAgICBtX3NvbGlkQ29s
b3IgYnkgY2hhbmdpbmcgdGhlIHR5cGUgb2YgbV9zb2xpZENvbG9yIHRvIGJlIE9wdGlvbmFsCisg
ICAgICAgICAgICAgICA8Q29sb3I+LiAoIW1fc29saWRDb2xvcikgaXMgZXF1aXZhbGVudCB0byAo
IW1fY2hlY2tlZEZvclNvbGlkQ29sb3IpCisgICAgICAgICAgICAgICBhbmQgKCFtX3NvbGlkQ29s
b3IuaXNWYWxpZCgpKSBpcyBlcXVpdmFsZW50IHRvICghbV9pc1NvbGlkQ29sb3IpLgorICAgICAg
ICAgICAgMy4gR2V0IHJpZCBvZiBCaXRtYXBJbWFnZTo6bV9oYXNVbmlmb3JtRnJhbWVTaXplIHNp
bmNlIGl0IGlzIG5vdCB1c2VkLgorICAgICAgICAgICAgNC4gTW92ZSB0aGUgQml0bWFwSW1hZ2Ug
Y29uc3RydWN0b3IgYW5kIGNoZWNrRm9yU29saWRDb2xvcigpIGZyb20gdGhlCisgICAgICAgICAg
ICAgICBwbGF0Zm9ybSBCaXRtYXBJbWFnZSBmaWxlcyB0byB0aGUgbWFzdGVyIEJpdG1hcEltYWdl
LmNwcC4KKyAgICAgICAgICAgIDUuIE1ha2UgdGhlIG1lbWJlcnMgb2YgSW1hZ2VGcmFtZURhdGEg
YmUgcHJpdmF0ZSBhbmQgYWRkIGdldHRlcnMgdG8KKyAgICAgICAgICAgICAgIHJldHVybiB0aGVp
ciB2YWx1ZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9y
bUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAg
ICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICBJbmNsdWRlIHRoZSBJbWFnZUZyYW1lRGF0YSBtYXN0
ZXIgYW5kIHBsYXRmb3JtIGZpbGVzIGluIHRoZSBXZWJLaXQgcHJvamVjdCBmaWxlcy4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogTW92ZWQgZnJvbSB0aGUgcGxh
dGZvcm0gQml0bWFwSW1hZ2UgZmlsZXMuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KTogVXNlIHRoZSBJbWFnZUZyYW1lRGF0YSBnZXR0ZXJzLgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6IFVzZSB0
aGUgSW1hZ2VGcmFtZURhdGEgZ2V0dGVycy4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6IFVzZSB0aGUgSW1hZ2VGcmFtZURhdGEg
Z2V0dGVycy4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95TWV0YWRhdGFB
bmROb3RpZnkpOiBTZXQgbV9zb2xpZENvbG9yIHRvIE51bGxvcHQgbWFya3MgaXQgdG8gYmUgcmVj
aGVja2VkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOiBNb3Zl
IGNyZWF0aW9uIG9mIHRoZSBJbWFnZUZyYW1lRGF0YSB0byBJbWFnZVNvdXJjZS4KKyAgICAgICAg
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOiAKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIFVzZSB0aGUgSW1h
Z2VGcmFtZURhdGEgZ2V0dGVycy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Y2hlY2tGb3JTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjptYXlGaWxsV2l0aFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OnNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmR1bXApOgorICAg
ICAgICBSZWx5IG9uIHRoZSBzdGF0ZSBhbmQgdGhlIHZhbHVlIG9mIG1fc29saWRDb2xvciB0byBh
bnN3ZXIgdGhlIHNvbGlkQ29sb3IgcXVlcmllcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6
RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1l
RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgSW1hZ2VGcmFtZURhdGEgdG8gYSBzZXBhcmF0
ZSBmaWxlIGFuZCBnaXQgcmlkIG9mIG1faXNTb2xpZENvbG9yLAorICAgICAgICBtX2NoZWNrZWRG
b3JTb2xpZENvbG9yIGFuZCBtX2hhc1VuaWZvcm1GcmFtZVNpemUuCisgICAgICAgIAorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEpOiBUaGUgZmlyc3QgY29u
c3RydWN0b3IgdGFrZXMgYW4KKyAgICAgICAgaW1hZ2UuIFRoZSBvd25lcnNoaXAgb2YgdGhpcyBp
bWFnZSBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgSW1hZ2VGcmFtZURhdGEuCisgICAgICAgIFRoZSBz
ZWNvbmQgY29uc3RydWN0b3IgdGFrZXMgYW4gSW1hZ2VEZWNvZGVyIGFuZCBmcm9tIGl0IHJldHJp
ZXZlcyB0aGUKKyAgICAgICAgaW1hZ2UgYW5kIGl0cyBtZXRhZGF0YS4KKyAgICAgICAgCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6fkltYWdlRnJhbWVEYXRhKTogRGlzcG9zZSB0
aGUgaW1hZ2UgYW5kIGl0cyBzdWItaW1hZ2VzLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZURhdGE6OmNsZWFyKTogQ2xlYXJzIGFsbCBvciBhIHBhcnQgb2YgdGhlIEltYWdlRnJhbWVEYXRh
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNvbGlkQ29sb3IpOiBJZiB0aGUg
aW1hZ2UgaXMgYSAxeDEgc29saWQgY29sb3IsIHJldHVybiB0aGUgY29sb3IgdG8gdXNlIHRvIGZp
bGwuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRh
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6IFJl
dHVybnMgdGhlIHN0YXR1cyBvZiB0aGUgZnJhbWU6IGVtcHR5LCBwYXJ0aWFsIG9yIGNvbXBsZXRl
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmlzQ29tcGxldGUpOiBSZXR1cm5z
IHRydWUgaWYgdGhlIGZyYW1lIGlzIGNvbXBsZXRlbHkgbG9hZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OnNpemUpOiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBpbWFnZS4K
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpmcmFtZUJ5dGVzKTogUmV0dXJucyB0
aGUgbnVtYmVyIG9mIG1lbW9yeSBieXRlcyB0YWtlbiBieSB0aGUgZnJhbWUuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2UpOiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUg
aW1hZ2UuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6b3JpZW50YXRpb24pOiBS
ZXR1cm5zIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgZnJhbWUuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lRGF0YTo6c3Vic2FtcGxpbmdMZXZlbCk6IFJldHVybnMgdGhlIHN1YnNhbXBsaW5n
TGV2ZWwgb2YgdGhlIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmR1
cmF0aW9uKTogUmV0dXJucyB0aGUgZHVyYXRpb24gb2YgYW5pbWF0ZWQgZnJhbWUuCisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aGFzQWxwaGEpOiBSZXR1cm5zIHRydWUgaWYgdGhl
IHBpeGVscyBvZiB0aGUgaW1hZ2UgaGF2ZSBhbHBoYSBjaGFubmVscy4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWVEYXRhOjpoYXNJbWFnZSk6IFJldHVybnMgdHJ1ZSBpZiBhbiBpbWFnZSBp
cyBhc3NvY2lhdGVkIHdpdGggdGhlIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZURhdGE6Omhhc01ldGFkYXRhKTogUmV0dXJucyB0cnVlIGlmIHRoZSBmcmFtZSBtZXRhZGF0YSBo
YXMgYmVlbiBmZXRjaGVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJh
bWVEYXRhQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aDoKKyAgICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBJbWFnZUZyYW1lRGF0YSBm
b3IgYSBzcGVjaWZpYyBmcmFtZSBpbmRleC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcik6IERlbGV0ZWQuCisgICAgICAgIFRoZXNlIGZ1
bmN0aW9ucyB3ZXJlIG1vdmVkIHRvIHRoZSBtYXN0ZXIgQml0bWFwSW1hZ2UuY3BwLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAg
ICBUaGlzIGZ1bmN0aW9uIHdhcyBtb3ZlZCB0byB0aGUgbWFzdGVyIEltYWdlRnJhbWVEYXRhLmNw
cC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VGcmFt
ZURhdGFDYWlyby5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6
OmNsZWFySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNpemVPZklt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjphbHBoYU9mSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNvbGlkQ29sb3JPZkltYWdlKToKKyAg
ICAgICAgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIENhaXJvIHBsYXRmb3JtIHNwZWNpZmljIElt
YWdlRnJhbWVEYXRhIGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6
OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3YXMgbW92ZWQgdG8gdGhl
IG1hc3RlciBJbWFnZUZyYW1lRGF0YS5jcHAuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICBUaGVzZSBm
dW5jdGlvbnMgd2VyZSBtb3ZlZCB0byB0aGUgbWFzdGVyIEJpdG1hcEltYWdlLmNwcC4KKworICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4
KToKKyAgICAgICAgVXNlIHRoZSBJbWFnZUZyYW1lRGF0YSBnZXR0ZXJzLgorICAgICAgICAKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1lRGF0YUNHLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xlYXJJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c2l6ZU9mSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OmFscGhhT2ZJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6c29saWRDb2xvck9mSW1hZ2UpOgorICAgICAgICBUaGlzIGZpbGUgaW1wbGVt
ZW50cyB0aGUgQ0cgcGxhdGZvcm0gc3BlY2lmaWMgSW1hZ2VGcmFtZURhdGEgZnVuY3Rpb25zLgor
CiAyMDE2LTA0LTE1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CiAKICAgICAgICAgQ2FsbGluZyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjo6YW5pbWF0aW9u
RW5kZWQoKSB3aWxsIGNyYXNoIGlmIHRoZSBTVkcgcHJvcGVydHkgaXMgbm90IGFuaW1hdGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1ZTYyMWVmYmY0NjY4OGM0ZTVjOTJhZTk1NmE1NTdiODli
NTkxZTdkLi5kMzNlNGJiMzczNjQxMmQ2MDRkZWY3ZGFkMGRhMDY4Y2Y4MjIzNTlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMjIxMyw2ICsyMjEzLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lTT1ZUVEN1ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZU9yaWVudGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtQXBwbGVXaW4uY21ha2UKaW5kZXggNWZmOTkxZmY3ZGEzMDhiYjkxODJlY2UzYmYxMjE3MzBh
NTQ4ZDI4Ny4uMWU3NzJkNDkwOWNlN2FiZmIyMjQ4NDg4ZDY4NGEwYWNiOTUwMDg4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC02OCw2ICs2OCw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
RGF0YUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VGcmFtZURhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHV2luLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCA4N2E5MWQwNTRhZWU5ODUyMGRiYjllNGY2NzQzNmFmZjcwNmFmM2JkLi41
ODA5OThiNmJmOWZiYmIyYTY4ZmE0Zjc2Njk0OTNiMmExNWJmNWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtMTMyLDYgKzEzMiw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUZyYW1lRGF0YUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ludFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fp
cm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5NTA4Y2U0ZWY5NmE0ZjAwMjVlMDRhYzUyOWIyYWMx
OTVhNjBjMmYzLi45YTVlNDJjZTRiOGY2MjBkZmRjNjc1NmM5ZGRiYzg1Y2Y4NWQ4YzVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTA0LDYgKzEwNCw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUZyYW1lRGF0YUNhaXJvLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ludFJlY3RDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNh
aXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBhZWEzNTcxMDU5MDliN2M3ZWUy
MDU1Mjc1OWVhYzk5ZjQ1NmQ1YTAwLi4yM2FkM2MzMTRiZjM2MzJhMWQ1N2Y3MzNhZmU3ODY5MDdl
MmQ4NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtNDA2LDYgKzQwNiw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyRGF0YUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VGcmFtZURhdGFDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW5DYWlyby5jbWFrZQppbmRleCAyYzU1M2IwNTUxZGFkNjlhYTE5OWQ5NjBmNTUy
MzQzZDkyMGYwN2IzLi5jZmE3MmVjZjM2YjQ2MzQzZjVlOTAzYzIyYjNkZDIzZmI5MzdiMzdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21ha2UKQEAgLTMwLDYgKzMwLDcgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNw
cAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlRnJhbWVEYXRhQ2Fpcm8uY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW50UmVjdENhaXJvLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXR0ZXJuQ2Fpcm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGRlYTQ3YzM2M2VlZmY3MGY0NzUyOThjODNiNDM2MTEw
MjQ2YjE5OC4uZjE4Njk5MDBlNTFkMGRlMzIyYmE5ZDdlNWZjMzgyNzMyOGQzYmRjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjI2OCwxMCArMjI2OCwxMyBAQAogCQk1M0VEM0ZERjE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRl
cm5hbFNldHRpbmdzR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0VEM0ZERDE2N0E4OEU3MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRp
bmdzR2VuZXJhdGVkLmggKi87IH07CiAJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0
aW5nc01hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNFRjc2NkExNjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CiAJ
CTUzRUY3NjZDMTY1MzE5OTQwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGluIENvcHkgR2Vu
ZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFRjc2
NkExNjUzMEE2MTAwNENCRTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi87IH07CisJCTU1MDEzRUQ5
MUNDMUFDODMwMEQ0NTFFMiAvKiBJbWFnZUZyYW1lRGF0YUNHLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MDEzRUQ4MUNDMUFDODMwMEQ0NTFFMiAv
KiBJbWFnZUZyYW1lRGF0YUNHLmNwcCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3Bw
ICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1h
Z2VEZWNvZGVyQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsg
fTsKIAkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFC
MDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAqLzsgfTsKKwkJNTU3RDYwNzAxQ0MxN0M2RjAw
REQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1N0Q2MDZFMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1l
RGF0YS5jcHAgKi87IH07CisJCTU1N0Q2MDcxMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1l
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU3
RDYwNkYxQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcxOTAwOUM2
MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2su
aCAqLzsgfTsKIAkJNTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkE3RjIy
MUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4MDM3MTYx
MUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJl
Y3QuY3BwICovOyB9OwpAQCAtOTg0OCwxMCArOTg1MSwxMyBAQAogCQk1M0VEM0ZEQzE2N0E4OEU3
MDA2NzYyRTYgLyogSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRUQzRkREMTY3QTg4RTcwMDY3NjJFNiAv
KiBKU0ludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXR0aW5nc01hY3Jvcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTAxM0VEODFDQzFBQzgzMDBENDUxRTIgLyogSW1h
Z2VGcmFtZURhdGFDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bWFnZUZyYW1lRGF0YUNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBC
QzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owog
CQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VE
ZWNvZGVyQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVy
Q0cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTU3RDYwNkUxQ0MxN0M2RjAwREQx
MjkxIC8qIEltYWdlRnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEltYWdlRnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTU3RDYwNkYxQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBT
aW11bGF0ZWRDbGljay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0
ZWRDbGljay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2
MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjE4MTAsNiArMjE4MTYsNyBAQAogCQkJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAv
KiBJbWFnZUNHLmNwcCAqLywKIAkJCQk1NTVCODdFQTFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VE
ZWNvZGVyQ0cuY3BwICovLAogCQkJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURl
Y29kZXJDRy5oICovLAorCQkJCTU1MDEzRUQ4MUNDMUFDODMwMEQ0NTFFMiAvKiBJbWFnZUZyYW1l
RGF0YUNHLmNwcCAqLywKIAkJCQk0QjM0ODA5MjBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3Vy
Y2VDRy5oICovLAogCQkJCTRCMzQ4MDkxMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNH
TWFjLm1tICovLAogCQkJCUIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNw
cCAqLywKQEAgLTIxOTcxLDYgKzIxOTc4LDggQEAKIAkJCQk0M0QyNTk3NjEzQzgxNkY0MDA2MDg1
NTkgLyogSW1hZ2VCdWZmZXIuY3BwICovLAogCQkJCUIyQTEwQjkxMEIzODE4QkQwMDA5OUFBNCAv
KiBJbWFnZUJ1ZmZlci5oICovLAogCQkJCTIyQkQ5RjdEMTM1MzYyNUMwMDlCRDEwMiAvKiBJbWFn
ZUJ1ZmZlckRhdGEuaCAqLywKKwkJCQk1NTdENjA2RTFDQzE3QzZGMDBERDEyOTEgLyogSW1hZ2VG
cmFtZURhdGEuY3BwICovLAorCQkJCTU1N0Q2MDZGMUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZy
YW1lRGF0YS5oICovLAogCQkJCUJDN0Y0NEE3MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2Vy
dmVyLmggKi8sCiAJCQkJQTg3NDhENzQxMkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRp
b24uY3BwICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0
aW9uLmggKi8sCkBAIC0yNjgwMyw2ICsyNjgxMiw3IEBACiAJCQkJMDc2MzA2RTExN0UxNjA4OTAw
NUE3QzRFIC8qIEpTU291cmNlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE3RkVFQUQxNkE0
RTc0QjAwNEMwQzMzIC8qIEpTU3BlZWNoU3ludGhlc2lzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
QTJBNUFEMjE2QTQ4NjBBMDA5NzZBMjUgLyogSlNTcGVlY2hTeW50aGVzaXNFdmVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTU3RDYwNzExQ0MxN0M2RjAwREQxMjkxIC8qIEltYWdlRnJhbWVEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTdGRUVBNzE2QTRFNkYzMDA0QzBDMzMgLyogSlNTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBN0ZFRUE5MTZBNEU2
RjMwMDRDMEMzMyAvKiBKU1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzgyNDMyOTBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJvci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMDczOCw2ICszMDc0OCw3IEBACiAJCQkJRTQ0NjE0MUEwQ0Q2ODI2OTAwRkFEQTc1IC8q
IEpTVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxNjE4ODMyMkVCMDBD
OTU0QjUgLyogSlNUb3VjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxODE4ODMyMkVC
MDBDOTU0QjUgLyogSlNUb3VjaEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU1N0Q2MDcw
MUNDMTdDNkYwMEREMTI5MSAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkRBN0MxQTE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaExpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDcwMzM0RTkxNDVBMUYzNjAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwODk0LDYgKzMwOTA1LDcgQEAKIAkJCQlGQUJFNzJG
NjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGQUJFNzJGODEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDVEOTEzQ0VFQUIyQTYwNTM0MjE4QUNGIC8q
IE1hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NTAxM0VEOTFD
QzFBQzgzMDBENDUxRTIgLyogSW1hZ2VGcmFtZURhdGFDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGQUJFNzJGRTEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDM5MDQ2REYxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTE9wZXJhdG9yRGljdGlv
bmFyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUQ0ODM5MENFRDY2QzMyNTVGNzJDNTkgLyog
TWF0aE1MU2VsZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA3Yzc4ZDM2NWMxYTQw
MmU2ZWMxOTRiNzcyZjU1YTllZGJkNmNkZTMzLi5lOWI5N2I0Y2RhYjgxMWFmN2JiOTc3MzlkZWI3
YmU3NWNiMWEyYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCkBAIC02MCwxNyArNjAsNDAgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcElt
YWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9wcm9ncmVzc2l2ZUxvYWRDaHVu
a1RpbWUoMCkKICAgICAsIG1fcHJvZ3Jlc3NpdmVMb2FkQ2h1bmtDb3VudCgwKQogI2VuZGlmCi0g
ICAgLCBtX2lzU29saWRDb2xvcihmYWxzZSkKLSAgICAsIG1fY2hlY2tlZEZvclNvbGlkQ29sb3Io
ZmFsc2UpCiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKGZhbHNlKQogICAgICwgbV9hbGxEYXRh
UmVjZWl2ZWQoZmFsc2UpCiAgICAgLCBtX2hhdmVTaXplKGZhbHNlKQogICAgICwgbV9zaXplQXZh
aWxhYmxlKGZhbHNlKQotICAgICwgbV9oYXNVbmlmb3JtRnJhbWVTaXplKHRydWUpCiAgICAgLCBt
X2hhdmVGcmFtZUNvdW50KGZhbHNlKQogICAgICwgbV9hbmltYXRpb25GaW5pc2hlZFdoZW5DYXRj
aGluZ1VwKGZhbHNlKQogewogfQorICAgIAorQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2
ZUltYWdlUHRyJiYgaW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIDogSW1hZ2Uo
b2JzZXJ2ZXIpCisgICAgLCBtX2N1cnJlbnRGcmFtZSgwKQorICAgICwgbV9yZXBldGl0aW9uQ291
bnQoY0FuaW1hdGlvbk5vbmUpCisgICAgLCBtX3JlcGV0aXRpb25Db3VudFN0YXR1cyhVbmtub3du
KQorICAgICwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApCisgICAgLCBtX2RlY29kZWRTaXplKDAp
CisgICAgLCBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSgwKQorICAgICwgbV9mcmFtZUNvdW50KDEp
CisgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkKHRydWUpCisgICAgLCBtX2FsbERhdGFSZWNlaXZl
ZCh0cnVlKQorICAgICwgbV9oYXZlU2l6ZSh0cnVlKQorICAgICwgbV9zaXplQXZhaWxhYmxlKHRy
dWUpCisgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCit7CisgICAgbV9mcmFtZXMuZ3Jvdygx
KTsKKyAgICBtX2ZyYW1lc1swXSA9IEltYWdlRnJhbWVEYXRhKGltYWdlKTsKKyAgICAKKyAgICAv
LyBTaW5jZSB3ZSBkb24ndCBoYXZlIGEgZGVjb2Rlciwgd2UgY2FuJ3QgZmlndXJlIG91dCB0aGUg
aW1hZ2Ugb3JpZW50YXRpb24uCisgICAgLy8gU2V0IG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlv
biB0byBiZSB0aGUgc2FtZSBhcyBtX3NpemUgc28gaXQncyBub3QgMHgwLgorICAgIG1fc2l6ZSA9
IG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbiA9IG1fZnJhbWVzWzBdLnNpemUoKTsKKyAgICBt
X2RlY29kZWRTaXplID0gbV9mcmFtZXNbMF0uZnJhbWVCeXRlcygpOworICAgIAorICAgIGNoZWNr
Rm9yU29saWRDb2xvcigpOworfQogCiBCaXRtYXBJbWFnZTo6fkJpdG1hcEltYWdlKCkKIHsKQEAg
LTk4LDcgKzEyMSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6
aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTE4LDggKzE0MSw4IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAg
IC8vIFRoZSB1bmRlcmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBq
dXN0IHRyeWluZyB0bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1
ZmZlciBkYXRhKSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0
YWRhdGEuCi0gICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1l
Qnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCisgICAgICAgIHVu
c2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5mcmFtZUJ5dGVzKCk7CisgICAgICAgIGlm
IChtX2ZyYW1lc1tpXS5jbGVhcihDYWNoZU1ldGFkYXRhKSkKICAgICAgICAgICAgIGZyYW1lQnl0
ZXNDbGVhcmVkICs9IGZyYW1lQnl0ZXM7CiAgICAgfQogCkBAIC0xNDQsNyArMTY3LDcgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkoYm9vbCBkZXN0cm95
QWxsKQogCiAgICAgdW5zaWduZWQgYWxsRnJhbWVCeXRlcyA9IDA7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgYWxsRnJhbWVCeXRlcyAr
PSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7CisgICAgICAgIGFsbEZyYW1lQnl0ZXMgKz0gbV9m
cmFtZXNbaV0uZnJhbWVCeXRlcygpOwogCiAgICAgaWYgKGFsbEZyYW1lQnl0ZXMgPiBsYXJnZUFu
aW1hdGlvbkN1dG9mZikKICAgICAgICAgZGVzdHJveURlY29kZWREYXRhKGRlc3Ryb3lBbGwpOwpA
QCAtMTUyLDggKzE3NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlm
TmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKIAogdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1l
dGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVkIGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU291cmNl
IGNsZWFyZWRTb3VyY2UpCiB7Ci0gICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICBtX2No
ZWNrZWRGb3JTb2xpZENvbG9yID0gZmFsc2U7CisgICAgbV9zb2xpZENvbG9yID0gTnVsbG9wdDsK
ICAgICBpbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCk7CiAKICAgICBBU1NFUlQobV9kZWNvZGVkU2l6
ZSA+PSBmcmFtZUJ5dGVzQ2xlYXJlZCk7CkBAIC0xNzcsMjkgKzE5OSwxMCBAQCB2b2lkIEJpdG1h
cEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluZ0xldmVsLCBJbQogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBudW1GcmFtZXMpCiAgICAg
ICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAotICAgIGlmIChmcmFtZUNhY2hpbmcgPT0g
Q2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
ID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2
ZWwpOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsID0gc3Vic2Ft
cGxpbmdMZXZlbDsKLSAgICAgICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlKQotICAgICAgICAgICAgY2hlY2tGb3JTb2xpZENvbG9yKCk7Ci0gICAgfQotCi0g
ICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3NvdXJjZS5vcmllbnRhdGlvbkF0
SW5kZXgoaW5kZXgpOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7
Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSA9IG1fc291cmNlLmZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoaW5kZXgpOwotCi0gICAgaWYgKHJlcGV0aXRpb25Db3VudChmYWxzZSkgIT0g
Y0FuaW1hdGlvbk5vbmUpCi0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uID0gbV9z
b3VyY2UuZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOwotCi0gICAgbV9mcmFtZXNbaW5kZXhd
Lm1faGFzQWxwaGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7Ci0gICAg
bV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcyA9IG1fc291cmNlLmZyYW1lQnl0ZXNBdEluZGV4
KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKLQotICAgIGNvbnN0IEludFNpemUgZnJhbWVTaXpl
KGluZGV4ID8gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZl
bCkgOiBtX3NpemUpOwotICAgIGlmICghc3Vic2FtcGxpbmdMZXZlbCAmJiBmcmFtZVNpemUgIT0g
bV9zaXplKQotICAgICAgICBtX2hhc1VuaWZvcm1GcmFtZVNpemUgPSBmYWxzZTsKLQotICAgIGlm
IChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNh
ZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcyk7CisgICAgbV9mcmFtZXNb
aW5kZXhdID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVEYXRhQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCwgZnJhbWVDYWNoaW5nKTsKKyAgICAKKyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLmhh
c0ltYWdlKCkpIHsKKyAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZlQ2FzdDxpbnQ+KG1fZnJh
bWVzW2luZGV4XS5mcmFtZUJ5dGVzKCkpOwogICAgICAgICBtX2RlY29kZWRTaXplICs9IGRlbHRh
Qnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxseS1kZWNvZGVkIGZyYW1lIHdpbGwgc3Vic3VtZSB0
aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1c2VkCiAgICAgICAgIC8vIHRvIGRldGVybWluZSBp
bWFnZSBwcm9wZXJ0aWVzLgpAQCAtMjg4LDE3ICsyOTEsMTYgQEAgYm9vbCBCaXRtYXBJbWFnZTo6
ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIE5PVEU6IERvbid0
IGNhbGwgZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgpIGhlcmUsIHRoYXQgd2lsbCB0cnkgdG8KICAg
ICAgICAgLy8gZGVjb2RlIGFueSB1bmNhY2hlZCAoaS5lLiBuZXZlci1kZWNvZGVkIG9yCiAgICAg
ICAgIC8vIGNsZWFyZWQtb24tYS1wcmV2aW91cy1wYXNzKSBmcmFtZXMhCi0gICAgICAgIHVuc2ln
bmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmICht
X2ZyYW1lc1tpXS5tX2hhdmVNZXRhZGF0YSAmJiAhbV9mcmFtZXNbaV0ubV9pc0NvbXBsZXRlKQot
ICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gKG1fZnJhbWVzW2ldLmNsZWFyKHRydWUp
ID8gZnJhbWVCeXRlcyA6IDApOworICAgICAgICBpZiAobV9mcmFtZXNbaV0uaGFzTWV0YWRhdGEo
KSAmJiAhbV9mcmFtZXNbaV0uaXNDb21wbGV0ZSgpKQorICAgICAgICAgICAgZnJhbWVCeXRlc0Ns
ZWFyZWQgKz0gbV9mcmFtZXNbaV0uY2xlYXIoQ2FjaGVOb25lKTsKICAgICB9CiAgICAgZGVzdHJv
eU1ldGFkYXRhQW5kTm90aWZ5KGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU291cmNlOjpObyk7
CiAjZWxzZQogICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBkaWZmZXJlbnQgZm9yIGlPUz8KICAg
ICBpbnQgZGVsdGFCeXRlcyA9IDA7CiAgICAgaWYgKCFtX2ZyYW1lcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0ubV9mcmFtZUJ5
dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0uY2xlYXIodHJ1
ZSkpIHsKKyAgICAgICAgaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0u
ZnJhbWVCeXRlcygpOworICAgICAgICBpZiAobV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0u
Y2xlYXIoQ2FjaGVOb25lKSkgewogICAgICAgICAgICAgZGVsdGFCeXRlcyArPSBieXRlczsKICAg
ICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gbV9kZWNvZGVkUHJvcGVydGllc1NpemU7CiAgICAgICAg
ICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7CkBAIC0zMjksNyArMzMxLDYgQEAgYm9v
bCBCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAjZW5kaWYK
IAogICAgIG1faGF2ZUZyYW1lQ291bnQgPSBmYWxzZTsKLSAgICBtX2hhc1VuaWZvcm1GcmFtZVNp
emUgPSB0cnVlOwogICAgIHJldHVybiBpc1NpemVBdmFpbGFibGUoKTsKIH0KIApAQCAtMzY4LDgg
KzM2OSw4IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGlu
ZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNhY2hpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkKLSAgICAgICAgfHwgKGZyYW1lQ2Fj
aGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdl
KQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFPbmx5ICYmICFtX2Zy
YW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpKQorICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09
IENhY2hlTWV0YWRhdGFBbmRJbWFnZSAmJiAhbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdlKCkpCisg
ICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YSAmJiAhbV9mcmFtZXNbaW5k
ZXhdLmhhc01ldGFkYXRhKCkpKQogICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwLCBmcmFtZUNh
Y2hpbmcpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zODQsMTAgKzM4NSw5IEBAIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0
IHByZXNlbnRhdGlvblNjCiAKICAgICAvLyBXZSBtYXkgaGF2ZSBjYWNoZWQgYSBmcmFtZSB3aXRo
IGEgaGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8KICAg
ICAvLyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgotICAgIGlmIChpbmRleCA8IG1fZnJh
bWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSAmJiBzdWJzYW1wbGluZ0xldmVs
IDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkgeworICAgIGlmIChpbmRleCA8
IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSAmJiBzdWJzYW1w
bGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLnN1YnNhbXBsaW5nTGV2ZWwoKSkgewogICAgICAg
ICAvLyBJZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQsIGJ1dCBhdCB0b28gc21hbGwgYSBz
aXplLCByZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KLSAgICAgICAgaW50IHNpemVDaGFuZ2Ug
PSAtbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhd
LmNsZWFyKHRydWUpOworICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1tX2ZyYW1lc1tpbmRleF0u
Y2xlYXIoQ2FjaGVOb25lKTsKICAgICAgICAgaW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogICAg
ICAgICBtX2RlY29kZWRTaXplICs9IHNpemVDaGFuZ2U7CiAgICAgICAgIGlmIChpbWFnZU9ic2Vy
dmVyKCkpCkBAIC0zOTUsMjYgKzM5NSwyNiBAQCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6
ZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TYwogICAg
IH0KIAogICAgIC8vIElmIHdlIGhhdmVuJ3QgZmV0Y2hlZCBhIGZyYW1lIHlldCwgZG8gc28uCi0g
ICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1h
Z2UpCi0gICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hlTWV0
YWRhdGFBbmRGcmFtZSk7CisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9m
cmFtZXNbaW5kZXhdLmhhc0ltYWdlKCkpCisgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRJbWFnZSk7CiAKLSAgICByZXR1cm4gbV9mcmFt
ZXNbaW5kZXhdLm1faW1hZ2U7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5pbWFnZSgpOwog
fQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFP
bmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGEp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1f
aXNDb21wbGV0ZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmlzQ29tcGxldGUoKTsKIH0K
IAogZmxvYXQgQml0bWFwSW1hZ2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkK
IHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5
KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGEpKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlv
bjsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmR1cmF0aW9uKCk7CiB9CiAKIE5hdGl2ZUlt
YWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCkBAIC00MjQs
MTEgKzQyNCwxMSBAQCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNo
ZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNo
ZU1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9mcmFtZXNbaW5k
ZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faGFz
QWxwaGE7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNNZXRhZGF0YSgpKQorICAgICAgICBy
ZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0FscGhhKCk7CiAKICAgICByZXR1cm4gbV9zb3VyY2Uu
ZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogfQpAQCAtNDQwLDExICs0NDAsMTEgQEAgYm9v
bCBCaXRtYXBJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkKIAogSW1hZ2VPcmll
bnRhdGlvbiBCaXRtYXBJbWFnZTo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9u
bHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YSkp
CiAgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CiAKLSAgICBpZiAobV9mcmFtZXNb
aW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1f
b3JpZW50YXRpb247CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNNZXRhZGF0YSgpKQorICAg
ICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm9yaWVudGF0aW9uKCk7CiAKICAgICByZXR1cm4g
bV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKIH0KQEAgLTY2NywxOSArNjY3LDQw
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmludGVybmFsQWR2YW5jZUFuaW1hdGlvbihBbmltYXRpb25B
ZHZhbmNlbWVudCBhZHZhbmNlbWVudCkKIAogICAgIHJldHVybiBhZHZhbmNlZEFuaW1hdGlvbjsK
IH0KKyAgICAKK3ZvaWQgQml0bWFwSW1hZ2U6OmNoZWNrRm9yU29saWRDb2xvcigpCit7CisgICAg
bV9zb2xpZENvbG9yID0gQ29sb3IoKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDb3VudCgpICE9IDEp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghKGVuc3VyZUZyYW1lSXNDYWNoZWQoMCwgQ2Fj
aGVNZXRhZGF0YSkgJiYgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzWzBdLmhhc01ldGFkYXRh
KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9mcmFtZXNbMF0uc2l6ZSgpICE9IElu
dFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghKGVuc3VyZUZyYW1lSXND
YWNoZWQoMCwgQ2FjaGVNZXRhZGF0YUFuZEltYWdlKSAmJiBtX2ZyYW1lc1swXS5oYXNJbWFnZSgp
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zb2xpZENvbG9yID0gbV9mcmFtZXNbMF0uc29s
aWRDb2xvcigpOworfQogCiBib29sIEJpdG1hcEltYWdlOjptYXlGaWxsV2l0aFNvbGlkQ29sb3Io
KQogewotICAgIGlmICghbV9jaGVja2VkRm9yU29saWRDb2xvciAmJiBmcmFtZUNvdW50KCkgPiAw
KSB7CisgICAgaWYgKGZyYW1lQ291bnQoKSAhPSAxIHx8IG1fY3VycmVudEZyYW1lKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFtX3NvbGlkQ29sb3IpCiAgICAgICAgIGNo
ZWNrRm9yU29saWRDb2xvcigpOwotICAgICAgICBBU1NFUlQobV9jaGVja2VkRm9yU29saWRDb2xv
cik7Ci0gICAgfQotICAgIHJldHVybiBtX2lzU29saWRDb2xvciAmJiAhbV9jdXJyZW50RnJhbWU7
CisgICAgCisgICAgcmV0dXJuIHNvbGlkQ29sb3IoKS5pc1ZhbGlkKCk7CiB9CiAKIENvbG9yIEJp
dG1hcEltYWdlOjpzb2xpZENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zb2xpZENvbG9y
OworICAgIHJldHVybiBtX3NvbGlkQ29sb3IgPyBtX3NvbGlkQ29sb3IudmFsdWUoKSA6IENvbG9y
KCk7CiB9CiAgICAgCiBib29sIEJpdG1hcEltYWdlOjpjYW5BbmltYXRlKCkKQEAgLTY5OSw4ICs3
MjAsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoImN1cnJlbnQtZnJhbWUiLCBtX2N1cnJlbnRGcmFtZSk7CiAg
ICAgfQogICAgIAotICAgIGlmIChtX2lzU29saWRDb2xvcikKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzb2xpZC1jb2xvciIsIG1faXNTb2xpZENvbG9yKTsKKyAgICBpZiAobV9zb2xpZENvbG9y
KQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNvbGlkLWNvbG9yIiwgbV9zb2xpZENvbG9yLnZh
bHVlKCkpOwogICAgIAogICAgIG1fc291cmNlLmR1bXAodHMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggN2M4ZWNhY2ZjNmM2MWM5
NDQ0ZDYxYWRkNGUyNzk3NmNiMjAyMWQ1MC4uYjhiZTFjNjcxN2JkOWVlYzdmNDA1ZTY0ZTMzOGRl
MjI3NjBiYjE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCkBAIC0yOCw4ICsyOCw5IEBACiAjaWZuZGVmIEJpdG1hcEltYWdlX2gKICNkZWZp
bmUgQml0bWFwSW1hZ2VfaAogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xvci5o
IgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNs
dWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCkBAIC02MCw0NiArNjEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFRpbWVyOwogCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS8vIEZyYW1lRGF0YSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLXN0cnVjdCBGcmFtZURhdGEgewotcHVibGlj
OgotICAgIEZyYW1lRGF0YSgpCi0gICAgICAgIDogbV9vcmllbnRhdGlvbihEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbikKLSAgICAgICAgLCBtX3N1YnNhbXBsaW5nTGV2ZWwoMCkKLSAgICAgICAgLCBt
X2R1cmF0aW9uKDApCi0gICAgICAgICwgbV9oYXZlTWV0YWRhdGEoZmFsc2UpCi0gICAgICAgICwg
bV9pc0NvbXBsZXRlKGZhbHNlKQotICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKLSAgICAgICAg
LCBtX2ZyYW1lQnl0ZXMoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZyYW1lRGF0YSgpCi0gICAg
eyAKLSAgICAgICAgY2xlYXIodHJ1ZSk7Ci0gICAgfQotCi0gICAgLy8gQ2xlYXIgdGhlIGNhY2hl
ZCBpbWFnZSBkYXRhIG9uIHRoZSBmcmFtZSwgYW5kIChvcHRpb25hbGx5KSB0aGUgbWV0YWRhdGEu
Ci0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBj
bGVhci4KLSAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7Ci0KLSAgICBOYXRpdmVJ
bWFnZVB0ciBtX2ltYWdlOwotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKLSAg
ICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbDsKLSAgICBmbG9hdCBtX2R1cmF0
aW9uOwotICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwotICAgIGJvb2wgbV9pc0NvbXBsZXRl
IDogMTsKLSAgICBib29sIG1faGFzQWxwaGEgOiAxOwotICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRl
czsKLX07Ci0KLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0KIGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVi
bGljIEltYWdlIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5k
IGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwpAQCAtMjIxLDExICsxODIsMTAgQEAgcHJv
dGVjdGVkOgogICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6
ZV90KTsKIAogICAgIC8vIERlY29kZXMgYW5kIGNhY2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3Nl
ZCBleGNlcHQgaW50ZXJuYWxseS4KLSAgICBlbnVtIEltYWdlRnJhbWVDYWNoaW5nIHsgQ2FjaGVN
ZXRhZGF0YU9ubHksIENhY2hlTWV0YWRhdGFBbmRGcmFtZSB9OwotICAgIHZvaWQgY2FjaGVGcmFt
ZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2Fj
aGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICB2b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRJbWFn
ZSk7CiAKICAgICAvLyBDYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0gZm9y
IGluZm8gd2l0aG91dCBkZWNvZGluZy4gUmV0dXJucyBmYWxzZSBvbiBpbmRleCBvdXQgb2YgYm91
bmRzLgotICAgIGJvb2wgZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJh
bWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBib29sIGVuc3VyZUZyYW1l
SXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFB
bmRJbWFnZSk7CiAKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0ZSBjYWNoZWQgZGF0YS4gV2hl
biB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAgICAvLyB0aGUgZW50aXJlIGZy
YW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291cmNlIHRvIGRlc3Ryb3kKQEAg
LTI3Miw4ICsyMzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnZhbGlkYXRlUGxhdGZvcm1E
YXRhKCk7CiAKICAgICAvLyBDaGVja3MgdG8gc2VlIGlmIHRoZSBpbWFnZSBpcyBhIDF4MSBzb2xp
ZCBjb2xvci4gV2Ugb3B0aW1pemUgdGhlc2UgaW1hZ2VzIGFuZCBqdXN0IGRvIGEgZmlsbCByZWN0
IGluc3RlYWQuCi0gICAgLy8gVGhpcyBjaGVjayBzaG91bGQgaGFwcGVuIHJlZ2FyZGxlc3Mgd2hl
dGhlciBtX2NoZWNrZWRGb3JTb2xpZENvbG9yIGlzIGFscmVhZHkgc2V0LCBhcyB0aGUgZnJhbWUg
bWF5IGhhdmUKLSAgICAvLyBjaGFuZ2VkLgorICAgIC8vIFRoaXMgY2hlY2sgc2hvdWxkIGhhcHBl
biByZWdhcmRsZXNzIHdoZXRoZXIgbV9zb2xpZENvbG9yIGlzIGFscmVhZHkgc2V0LCBhcyB0aGUg
ZnJhbWUgbWF5IGhhdmUgY2hhbmdlZC4KICAgICB2b2lkIGNoZWNrRm9yU29saWRDb2xvcigpOwog
CiAgICAgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKQEAgLTI5NCw3ICsy
NTMsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemVSZXNwZWN0aW5nT3Jp
ZW50YXRpb247CiAKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWU7IC8vIFRoZSBpbmRleCBvZiB0
aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCi0gICAgVmVjdG9yPEZyYW1lRGF0YSwgMT4g
bV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRp
b24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCisgICAg
VmVjdG9yPEltYWdlRnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4gYXJyYXkgb2YgdGhlIGNh
Y2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byByZWYgZnJhbWVzIHRvIHBp
biB0aGVtIGluIHRoZSBjYWNoZS4KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9mcmFt
ZVRpbWVyOwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwgYW5p
bWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4gVGhpcyB3aWxsIGJlIGNBbmltYXRpb25Ob25lIGlm
IHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0aW9uLgpAQCAtMzA5LDcgKzI2
OCw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3RpZmZS
ZXA7IC8vIENhY2hlZCBUSUZGIHJlcCBmb3IgZnJhbWUgMC4gT25seSBidWlsdCBsYXppbHkgaWYg
c29tZW9uZSBxdWVyaWVzIGZvciBvbmUuCiAjZW5kaWYKIAotICAgIENvbG9yIG1fc29saWRDb2xv
cjsgIC8vIElmIHdlJ3JlIGEgMXgxIHNvbGlkIGNvbG9yLCB0aGlzIGlzIHRoZSBjb2xvciB0byB1
c2UgdG8gZmlsbC4KKyAgICBPcHRpb25hbDxDb2xvcj4gbV9zb2xpZENvbG9yOyAvLyBJZiB3ZSdy
ZSBhIDF4MSBzb2xpZCBjb2xvciwgdGhpcyBpcyB0aGUgY29sb3IgdG8gdXNlIHRvIGZpbGwuCiAK
ICAgICB1bnNpZ25lZCBtX2RlY29kZWRTaXplOyAvLyBUaGUgY3VycmVudCBzaXplIG9mIGFsbCBk
ZWNvZGVkIGZyYW1lcy4KICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZGVjb2RlZFByb3BlcnRpZXNT
aXplOyAvLyBUaGUgc2l6ZSBvZiBkYXRhIGRlY29kZWQgYnkgdGhlIHNvdXJjZSB0byBkZXRlcm1p
bmUgaW1hZ2UgcHJvcGVydGllcyAoZS5nLiBzaXplLCBmcmFtZSBjb3VudCwgZXRjKS4KQEAgLTMy
MCwxNSArMjc5LDExIEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fcHJvZ3Jlc3NpdmVMb2FkQ2h1
bmtUaW1lOwogICAgIHVpbnQxNl90IG1fcHJvZ3Jlc3NpdmVMb2FkQ2h1bmtDb3VudDsKICNlbmRp
ZgotICAgIGJvb2wgbV9pc1NvbGlkQ29sb3IgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBhcmUg
YSAxeDEgc29saWQgaW1hZ2UuCi0gICAgYm9vbCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yIDogMTsg
Ly8gV2hldGhlciB3ZSd2ZSBjaGVja2VkIHRoZSBmcmFtZSBmb3Igc29saWQgY29sb3IuCi0KICAg
ICBib29sIG1fYW5pbWF0aW9uRmluaXNoZWQgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSd2ZSBj
b21wbGV0ZWQgdGhlIGVudGlyZSBhbmltYXRpb24uCiAKICAgICBib29sIG1fYWxsRGF0YVJlY2Vp
dmVkIDogMTsgLy8gV2hldGhlciBvciBub3Qgd2UndmUgcmVjZWl2ZWQgYWxsIG91ciBkYXRhLgog
ICAgIG11dGFibGUgYm9vbCBtX2hhdmVTaXplIDogMTsgLy8gV2hldGhlciBvciBub3Qgb3VyIHxt
X3NpemV8IG1lbWJlciB2YXJpYWJsZSBoYXMgdGhlIGZpbmFsIG92ZXJhbGwgaW1hZ2Ugc2l6ZSB5
ZXQuCiAgICAgYm9vbCBtX3NpemVBdmFpbGFibGUgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBj
YW4gb2J0YWluIHRoZSBzaXplIG9mIHRoZSBmaXJzdCBpbWFnZSBmcmFtZSB5ZXQgZnJvbSBJbWFn
ZUlPLgotICAgIG11dGFibGUgYm9vbCBtX2hhc1VuaWZvcm1GcmFtZVNpemUgOiAxOwogICAgIG11
dGFibGUgYm9vbCBtX2hhdmVGcmFtZUNvdW50IDogMTsKICAgICBib29sIG1fYW5pbWF0aW9uRmlu
aXNoZWRXaGVuQ2F0Y2hpbmdVcCA6IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTM4ZGU5ZmU5MDA2
YjEyMWQ3YmQwNjVlMmEwY2I1ZTVkZTVmMzlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCkBAIC0wLDAgKzEsOTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCisKKyNpZiBVU0UoQ0cp
CisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKKyNlbHNlCisjaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVyLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorSW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKCkKK3sKK30KKworSW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVE
YXRhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKKyAgICA6IG1fc3RhdHVzKEZyYW1lQ29t
cGxldGUpCisgICAgLCBtX3NpemUoSW1hZ2VGcmFtZURhdGE6OnNpemVPZkltYWdlKGltYWdlKSkK
KyAgICAsIG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2hhc0FscGhhKEltYWdlRnJhbWVEYXRhOjph
bHBoYU9mSW1hZ2UoaW1hZ2UpKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURh
dGEoSW1hZ2VEZWNvZGVyJiBkZWNvZGVyLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQoreworICAg
IEFTU0VSVChmcmFtZUNhY2hpbmcgJiBDYWNoZU1ldGFkYXRhKTsKKworICAgIGlmIChmcmFtZUNh
Y2hpbmcgJiBDYWNoZUltYWdlKSB7CisgICAgICAgIG1faW1hZ2UgPSBkZWNvZGVyLmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICAgICAgbV9zdWJz
YW1wbGluZ0xldmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKKyAgICB9CisKKyAgICBpZiAoZnJhbWVD
YWNoaW5nICYgQ2FjaGVNZXRhZGF0YSkgeworICAgICAgICBtX29yaWVudGF0aW9uID0gZGVjb2Rl
ci5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOworICAgICAgICBtX3N0YXR1cyA9IGRlY29kZXIu
ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkgPyBGcmFtZUNvbXBsZXRlIDogRnJhbWVQYXJ0
aWFsOworICAgICAgICAKKyAgICAgICAgaWYgKGRlY29kZXIucmVwZXRpdGlvbkNvdW50KCkgIT0g
Y0FuaW1hdGlvbk5vbmUpCisgICAgICAgICAgICBtX2R1cmF0aW9uID0gZGVjb2Rlci5mcmFtZUR1
cmF0aW9uQXRJbmRleChpbmRleCk7CisKKyAgICAgICAgbV9oYXNBbHBoYSA9IGRlY29kZXIuZnJh
bWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworICAgICAgICBtX3NpemUgPSBkZWNvZGVyLmZyYW1l
U2l6ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgIH0KK30KKworSW1hZ2VG
cmFtZURhdGE6On5JbWFnZUZyYW1lRGF0YSgpCit7CisgICAgY2xlYXJJbWFnZShtX2ltYWdlKTsK
K30KKwordW5zaWduZWQgSW1hZ2VGcmFtZURhdGE6OmNsZWFyKEltYWdlRnJhbWVDYWNoaW5nIGZy
YW1lQ2FjaGluZykKK3sKKyAgICBBU1NFUlQoIShmcmFtZUNhY2hpbmcgJiBDYWNoZUltYWdlKSk7
CisKKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gdGhpcy0+ZnJhbWVCeXRlcygpOworCisgICAg
Y2xlYXJJbWFnZShtX2ltYWdlKTsKKworICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVOb25l
KQorICAgICAgICAqdGhpcyA9IEltYWdlRnJhbWVEYXRhKCk7CisKKyAgICByZXR1cm4gZnJhbWVC
eXRlczsKK30KKyAgICAKK0NvbG9yIEltYWdlRnJhbWVEYXRhOjpzb2xpZENvbG9yKCkgY29uc3QK
K3sKKyAgICBpZiAobV9zaXplICE9IEludFNpemUoMSwgMSkgfHwgIWhhc0ltYWdlKCkpCisgICAg
ICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIHJldHVybiBJbWFnZUZyYW1lRGF0YTo6c29s
aWRDb2xvck9mSW1hZ2UobV9pbWFnZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyYmFjNjhkMDgy
MDYyNGY5OWY3NzhmNjU2OTQwYTE4YmE4MzEwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oCkBAIC0wLDAgKzEsMTAz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSW1hZ2VGcmFtZURhdGFfaAorI2RlZmluZSBJbWFnZUZyYW1lRGF0YV9oCisKKyNpbmNsdWRl
ICJDb2xvci5oIgorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnRT
aXplLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorLy8gU3Vic2FtcGxpbmdMZXZlbC4g
MCBpcyBubyBzdWJzYW1wbGluZywgMSBpcyBoYWxmIGRpbWVuc2lvbnMgb24gZWFjaCBheGlzIGV0
Yy4KK3R5cGVkZWYgc2hvcnQgU3Vic2FtcGxpbmdMZXZlbDsKKworY29uc3QgU3Vic2FtcGxpbmdM
ZXZlbCBNaW5TdWJzYW1wbGluZ0xldmVsID0gMDsKK2NvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgTWF4
U3Vic2FtcGxpbmdMZXZlbCA9IDM7Citjb25zdCBTdWJzYW1wbGluZ0xldmVsIERlZmF1bHRTdWJz
YW1wbGluZ0xldmVsID0gTWluU3Vic2FtcGxpbmdMZXZlbDsKKworZW51bSBJbWFnZUZyYW1lQ2Fj
aGluZyB7CisgICAgQ2FjaGVOb25lLAorICAgIENhY2hlTWV0YWRhdGEsCisgICAgQ2FjaGVJbWFn
ZSwKKyAgICBDYWNoZU1ldGFkYXRhQW5kSW1hZ2UKK307CisKK2VudW0gSW1hZ2VGcmFtZVN0YXR1
cyB7CisgICAgRnJhbWVFbXB0eSwKKyAgICBGcmFtZVBhcnRpYWwsCisgICAgRnJhbWVDb21wbGV0
ZQorfTsKKworY2xhc3MgSW1hZ2VEZWNvZGVyOworCitjbGFzcyBJbWFnZUZyYW1lRGF0YSB7Citw
dWJsaWM6CisgICAgSW1hZ2VGcmFtZURhdGEoKTsKKyAgICBJbWFnZUZyYW1lRGF0YShjb25zdCBO
YXRpdmVJbWFnZVB0ciYpOworICAgIEltYWdlRnJhbWVEYXRhKEltYWdlRGVjb2RlciYsIHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsLCBJbWFn
ZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRJbWFnZSk7CisgICAgCisgICAgfkltYWdl
RnJhbWVEYXRhKCk7CisgICAgCisgICAgdW5zaWduZWQgY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmcp
OworICAgIENvbG9yIHNvbGlkQ29sb3IoKSBjb25zdDsKKyAgICAKKyAgICBJbWFnZUZyYW1lU3Rh
dHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAgYm9vbCBpc0NvbXBs
ZXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gRnJhbWVDb21wbGV0ZTsgfQorICAgIElu
dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHVuc2lnbmVkIGZyYW1l
Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBoYXNJbWFnZSgpID8gbV9zaXplLmFyZWEoKSAqIDQgOiAw
OyB9CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9
CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZW50YXRpb247IH0KKyAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwo
KSBjb25zdCB7IHJldHVybiBtX3N1YnNhbXBsaW5nTGV2ZWw7IH0KKyAgICBmbG9hdCBkdXJhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKyAgICAKKyAgICBib29sIGhhc0FscGhh
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNBbHBoYTsgfQorICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlOyB9CisgICAgYm9vbCBoYXNNZXRhZGF0YSgpIGNvbnN0IHsgcmV0
dXJuICFtX3NpemUuaXNFbXB0eSgpOyB9CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lk
IGNsZWFySW1hZ2UoTmF0aXZlSW1hZ2VQdHImKTsKKyAgICBzdGF0aWMgSW50U2l6ZSBzaXplT2ZJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOworICAgIHN0YXRpYyBib29sIGFscGhhT2ZJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOworICAgIHN0YXRpYyBDb2xvciBzb2xpZENvbG9yT2ZJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOworICAgIAorICAgIEltYWdlRnJhbWVTdGF0dXMg
bV9zdGF0dXMgeyBGcmFtZUVtcHR5IH07CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgTmF0aXZl
SW1hZ2VQdHIgbV9pbWFnZTsKKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRp
b24geyBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbiB9OworICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9z
dWJzYW1wbGluZ0xldmVsIHsgMCB9OworICAgIGZsb2F0IG1fZHVyYXRpb24geyAwIH07CisgICAg
Ym9vbCBtX2hhc0FscGhhIHsgdHJ1ZSB9OworfTsKKyAgICAKK30KKworI2VuZGlmIC8vIEltYWdl
RnJhbWVEYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAppbmRleCA3ZWQ5ZmQxZDA3Njc5M2RmZjRkZjdjZDIzZDc3ZjU4MWI4ZGFhMjhi
Li5jMTA4Y2YxMTE1NjJjMmVhOTIyMTU4MzY4ZmE2NjRhMDY3NTQzNGQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0yMTQsNiAr
MjE0LDExIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2CiB7CiAgICAgcmV0dXJuIGluaXRpYWxp
emVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKSA6IG51bGxwdHI7CiB9CisgICAgCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJj
ZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQoreworICAg
IHJldHVybiBpbml0aWFsaXplZCgpID8gSW1hZ2VGcmFtZURhdGEoKm1fZGVjb2RlciwgaW5kZXgs
IHN1YnNhbXBsaW5nTGV2ZWwsIGZyYW1lQ2FjaGluZykgOiBJbWFnZUZyYW1lRGF0YSgpOworfQog
CiB2b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggYTg5ODA3
NjFiNDQxNzJhNjg4MzM1YWI5NzkwYjg5NDhkNzMxMDNmOS4uYWMzNjFkNzc3ZTEwMjFlZDk0ZDU4
NzVjNmZhNDIzMWI5OTcxYjE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEltYWdlU291cmNl
X2gKICNkZWZpbmUgSW1hZ2VTb3VyY2VfaAogCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIK
ICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNp
bmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgpAQCAtNjMsOSArNjQsNiBAQCBjb25zdCBpbnQgY0Fu
aW1hdGlvbkxvb3BPbmNlID0gMDsKIGNvbnN0IGludCBjQW5pbWF0aW9uTG9vcEluZmluaXRlID0g
LTE7CiBjb25zdCBpbnQgY0FuaW1hdGlvbk5vbmUgPSAtMjsKIAotLy8gU3Vic2FtcGxpbmdMZXZl
bC4gMCBpcyBubyBzdWJzYW1wbGluZywgMSBpcyBoYWxmIGRpbWVuc2lvbnMgb24gZWFjaCBheGlz
IGV0Yy4KLXR5cGVkZWYgc2hvcnQgU3Vic2FtcGxpbmdMZXZlbDsKLQogY2xhc3MgSW1hZ2VTb3Vy
Y2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlU291cmNlKTsKICAgICBmcmllbmQg
Y2xhc3MgQml0bWFwSW1hZ2U7CkBAIC0xMjksMTggKzEyNywxOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBhbGxvd1N1YnNhbXBsaW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKICAgICAKICAg
ICAvLyBTaXplIG9mIG9wdGlvbmFsbHkgc3Vic2FtcGxlZCBmcmFtZS4KLSAgICBJbnRTaXplIGZy
YW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCwgUmVzcGVjdEltYWdl
T3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3Q7Cisg
ICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERl
ZmF1bHRTdWJzYW1wbGluZ0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05v
dFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdDsKICAgICAKICAgICAvLyBSZXR1cm4gdGhl
IG51bWJlciBvZiBieXRlcyBpbiB0aGUgZGVjb2RlZCBmcmFtZS4gSWYgdGhlIGZyYW1lIGlzIG5v
dCB5ZXQKICAgICAvLyBkZWNvZGVkIHRoZW4gcmV0dXJuIDAuCi0gICAgdW5zaWduZWQgZnJhbWVC
eXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCkgY29uc3Q7CisgICAgdW5z
aWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVs
dFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0OwogICAgIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25B
dEluZGV4KHNpemVfdCk7CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgo
c2l6ZV90KSBjb25zdDsgLy8gRVhJRiBpbWFnZSBvcmllbnRhdGlvbgogICAgIAogICAgIC8vIENh
bGxlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBo
aWdoZXIgaW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAg
TmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gMCk7CisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwpOworICAg
IEltYWdlRnJhbWVEYXRhIGNyZWF0ZUZyYW1lRGF0YUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2Fj
aGVNZXRhZGF0YUFuZEltYWdlKTsKICAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckZyYW1l
QnVmZmVyQ2FjaGUoc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggMWY0ZWUyMDc2
NmMxNWRjZDdlMGFlNmNiYzBkNGJkMWM3MzQ1MTYwMS4uYzI0NmMyZjUzMTEyZmJlNjMyYmNmOTRk
YjZiOWI3ZDAyNTI0MmNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTM4LDMxICszOCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiYgbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2Vy
dmVyKQotICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCi0gICAgLCBtX3NpemUoY2Fpcm9TdXJmYWNlU2l6
ZShuYXRpdmVJbWFnZS5nZXQoKSkpCi0gICAgLCBtX2N1cnJlbnRGcmFtZSgwKQotICAgICwgbV9y
ZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCi0gICAgLCBtX3JlcGV0aXRpb25Db3VudFN0
YXR1cyhVbmtub3duKQotICAgICwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApCi0gICAgLCBtX2Rl
Y29kZWRTaXplKG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpICogNCkKLSAgICAsIG1f
ZnJhbWVDb3VudCgxKQotICAgICwgbV9pc1NvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2NoZWNr
ZWRGb3JTb2xpZENvbG9yKGZhbHNlKQotICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQot
ICAgICwgbV9hbGxEYXRhUmVjZWl2ZWQodHJ1ZSkKLSAgICAsIG1faGF2ZVNpemUodHJ1ZSkKLSAg
ICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQotICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQot
ewotICAgIG1fZnJhbWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNh
aXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQobmF0aXZlSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRF
TlRfQ09MT1I7Ci0gICAgbV9mcmFtZXNbMF0ubV9pbWFnZSA9IFdURk1vdmUobmF0aXZlSW1hZ2Up
OwotICAgIG1fZnJhbWVzWzBdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLQotICAgIGNoZWNrRm9y
U29saWRDb2xvcigpOwotfQotCiB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBD
b21wb3NpdGVPcGVyYXRvciBvcCwKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCiB7CkBAIC0xMjEsNDQgKzk2LDYgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRo
aXMpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKQotewotICAg
IG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0gICAgbV9jaGVja2VkRm9yU29saWRDb2xvciA9IHRy
dWU7Ci0KLSAgICBpZiAoZnJhbWVDb3VudCgpID4gMSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
YXV0byBzdXJmYWNlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotICAgIGlm
ICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5
ZXQuCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1
cmZhY2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgSW50U2l6ZSBzaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlLmdldCgpKTsK
LQotICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9IDEpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkKiBwaXhlbENvbG9yID0gcmVpbnRlcnByZXRfY2Fz
dF9wdHI8dW5zaWduZWQqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UuZ2V0
KCkpKTsKLSAgICBtX3NvbGlkQ29sb3IgPSBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4
ZWxDb2xvcik7Ci0KLSAgICBtX2lzU29saWRDb2xvciA9IHRydWU7Ci19Ci0KLWJvb2wgRnJhbWVE
YXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEp
Ci0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBpZiAobV9pbWFnZSkgewot
ICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VGcmFtZURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUZyYW1lRGF0YUNhaXJvLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTMz
NDY5ZmRmNTExMWNmODBjYjY2MDY0N2UyOGFhYzM0NmQ4MGE2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VGcmFtZURhdGFDYWly
by5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURh
dGEuaCIKKworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBJbWFnZUZyYW1lRGF0YTo6Y2xlYXJJbWFnZShS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgc3VyZmFjZSkKK3sKKyAgICBzdXJmYWNlID0gbnVsbHB0
cjsKK30KKworSW50U2l6ZSBJbWFnZUZyYW1lRGF0YTo6c2l6ZU9mSW1hZ2UoY29uc3QgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4mIHN1cmZhY2UpCit7CisgICAgcmV0dXJuIHN1cmZhY2UgPyBjYWly
b1N1cmZhY2VTaXplKHN1cmZhY2UuZ2V0KCkpIDogSW50U2l6ZSgpOworfQorCitib29sIEltYWdl
RnJhbWVEYXRhOjphbHBoYU9mSW1hZ2UoY29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIHN1
cmZhY2UpCit7CisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoc3VyZmFjZS5n
ZXQoKSkgIT0gQ0FJUk9fQ09OVEVOVF9DT0xPUjsKK30KKworQ29sb3IgSW1hZ2VGcmFtZURhdGE6
OnNvbGlkQ29sb3JPZkltYWdlKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiBzdXJmYWNl
KQoreworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UuZ2V0KCkpICE9IENB
SVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBJ
bnRTaXplIHNpemUgPSBjYWlyb1N1cmZhY2VTaXplKHN1cmZhY2UuZ2V0KCkpOworCisgICAgaWYg
KHNpemUud2lkdGgoKSAhPSAxIHx8IHNpemUuaGVpZ2h0KCkgIT0gMSkKKyAgICAgICAgcmV0dXJu
IENvbG9yKCk7CisKKyAgICB1bnNpZ25lZCogcGl4ZWxDb2xvciA9IHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPHVuc2lnbmVkKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlLmdldCgp
KSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbENvbG9yKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNH
LmNwcAppbmRleCA2OTMyYTEyZmRmOGMxMThkZGIyNGM4OTI3Y2VjNWNmMWZkNjVlYmJhLi41ZjFi
YmI2NzEwZmZlNjE5MDZhM2MzZjkzMWVkZTE3ZTZlYmVjN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtNTAs
MTAwICs1MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBGcmFtZURhdGE6OmNs
ZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKLXsKLSAgICBpZiAoY2xlYXJNZXRhZGF0YSkKLSAgICAg
ICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKLQotICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IDA7
Ci0KLSAgICBpZiAobV9pbWFnZSkgewotI2lmIENBQ0hFX1NVQklNQUdFUwotICAgICAgICBzdWJp
bWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2ltYWdlLmdldCgpKTsKLSNlbmRpZgotICAgICAgICBt
X2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFJldGFpblB0cjxDR0ltYWdl
UmVmPiYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKLSAgICA6IEltYWdlKG9ic2Vy
dmVyKQotICAgICwgbV9jdXJyZW50RnJhbWUoMCkKLSAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNB
bmltYXRpb25Ob25lKQotICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKLSAg
ICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQotICAgICwgbV9kZWNvZGVkU2l6ZSgwKQotICAg
ICwgbV9kZWNvZGVkUHJvcGVydGllc1NpemUoMCkKLSAgICAsIG1fZnJhbWVDb3VudCgxKQotICAg
ICwgbV9pc1NvbGlkQ29sb3IoZmFsc2UpCi0gICAgLCBtX2NoZWNrZWRGb3JTb2xpZENvbG9yKGZh
bHNlKQotICAgICwgbV9hbmltYXRpb25GaW5pc2hlZCh0cnVlKQotICAgICwgbV9hbGxEYXRhUmVj
ZWl2ZWQodHJ1ZSkKLSAgICAsIG1faGF2ZVNpemUodHJ1ZSkKLSAgICAsIG1fc2l6ZUF2YWlsYWJs
ZSh0cnVlKQotICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQotewotICAgIENHRmxvYXQgd2lk
dGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOwotICAgIENHRmxvYXQgaGVpZ2h0ID0g
Q0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSk7Ci0gICAgbV9kZWNvZGVkU2l6ZSA9IHdpZHRo
ICogaGVpZ2h0ICogNDsKLSAgICBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwotCi0g
ICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0IGZpZ3VyZSBvdXQg
dGhlIGltYWdlIG9yaWVudGF0aW9uLgotICAgIC8vIFNldCBtX3NpemVSZXNwZWN0aW5nT3JpZW50
YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4MC4KLSAgICBtX3Np
emVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemU7Ci0KLSAgICBtX2ZyYW1lcy5ncm93KDEp
OwotICAgIG1fZnJhbWVzWzBdLm1faW1hZ2UgPSBXVEZNb3ZlKGltYWdlKTsKLSAgICBtX2ZyYW1l
c1swXS5tX2hhc0FscGhhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9
IHRydWU7Ci0KLSAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKLX0KLQotdm9pZCBCaXRtYXBJbWFn
ZTo6Y2hlY2tGb3JTb2xpZENvbG9yKCkKLXsKLSAgICBtX2NoZWNrZWRGb3JTb2xpZENvbG9yID0g
dHJ1ZTsKLSAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotCi0gICAgaWYgKGZyYW1lQ291bnQo
KSA+IDEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghaGF2ZUZyYW1lSW1hZ2VBdEluZGV4
KDApKSB7Ci0gICAgICAgIEludFNpemUgc2l6ZSA9IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgo
MCwgMCk7Ci0gICAgICAgIGlmIChzaXplLndpZHRoKCkgIT0gMSB8fCBzaXplLmhlaWdodCgpICE9
IDEpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2Fj
aGVkKDApKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENHSW1hZ2VSZWYgaW1h
Z2UgPSBudWxscHRyOwotICAgIGlmIChtX2ZyYW1lcy5zaXplKCkpCi0gICAgICAgIGltYWdlID0g
bV9mcmFtZXNbMF0ubV9pbWFnZS5nZXQoKTsKLQotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IGNoZWNrIGZvciBzb2xpZCBjb2xvciBp
biB0aGUgaW1wb3J0YW50IHNwZWNpYWwgY2FzZSBvZiBhIDF4MSBpbWFnZS4KLSAgICBpZiAoQ0dJ
bWFnZUdldFdpZHRoKGltYWdlKSA9PSAxICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpID09IDEp
IHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgICAgICBSZXRh
aW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVm
KCksCi0gICAgICAgICAgICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkJpZykpOwotICAgICAgICBpZiAoIWJpdG1hcENvbnRleHQpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dChiaXRtYXBDb250ZXh0LmdldCgp
KS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgICAgIENHUmVjdCBk
ZXN0aW5hdGlvblJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpOwotICAgICAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25SZWN0LCBpbWFnZSk7
Ci0gICAgICAgIGlmICghcGl4ZWxbM10pCi0gICAgICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xv
cigwLCAwLCAwLCAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zb2xpZENvbG9yID0g
Q29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFsz
XSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotCi0gICAgICAgIG1faXNT
b2xpZENvbG9yID0gdHJ1ZTsKLSAgICB9Ci19Ci0KIENHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6Omdl
dENHSW1hZ2VSZWYoKQogewogICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsK
QEAgLTIyOSwxMSArMTM1LDExIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBCaXRtYXBJbWFnZTo6
Y29weVVuc2NhbGVkRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRl
eCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKGlu
ZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCisgICAg
aWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdl
KCkpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDApOwogCi0gICAgaWYgKCFtX2ZyYW1lc1tp
bmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKQotICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhd
Lm1faW1hZ2U7CisgICAgaWYgKCFtX2ZyYW1lc1tpbmRleF0uc3Vic2FtcGxpbmdMZXZlbCgpKQor
ICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmltYWdlKCk7CiAKICAgICByZXR1cm4gbV9z
b3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VGcmFtZURhdGFDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUZyYW1lRGF0YUNHLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iN2YyYzQzNzIwNjE2NTFhOTNhZWU0NzFlNTYyYmJjZjVlZWI1NmM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VG
cmFtZURhdGFDRy5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFn
ZUZyYW1lRGF0YS5oIgorCisjaWYgVVNFKENHKQorCisjaW5jbHVkZSAiQ29yZUdyYXBoaWNzU1BJ
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBJbWFnZUZyYW1l
RGF0YTo6Y2xlYXJJbWFnZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQoreworICAgIGlm
ICghaW1hZ2UpCisgICAgICAgIHJldHVybjsKKyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBzdWJp
bWFnZUNhY2hlKCkuY2xlYXJJbWFnZShpbWFnZS5nZXQoKSk7CisjZW5kaWYKKyAgICBpbWFnZSA9
IG51bGxwdHI7Cit9CisKK0ludFNpemUgSW1hZ2VGcmFtZURhdGE6OnNpemVPZkltYWdlKGNvbnN0
IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCit7CisgICAgcmV0dXJuIGltYWdlID8gSW50
U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
LmdldCgpKSkgOiBJbnRTaXplKCk7Cit9CisgICAgCitib29sIEltYWdlRnJhbWVEYXRhOjphbHBo
YU9mSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JikKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKyAgICAKK0NvbG9yIEltYWdlRnJhbWVEYXRhOjpzb2xpZENvbG9yT2ZJbWFnZShjb25z
dCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQoreworICAgIHVuc2lnbmVkIGNoYXIgcGl4
ZWxbNF07IC8vIFJHQkEKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBiaXRtYXBDb250ZXh0
ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihw
aXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCisgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisKKyAgICBpZiAoIWJpdG1h
cENvbnRleHQpCisgICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgR3JhcGhpY3NDb250ZXh0
KGJpdG1hcENvbnRleHQuZ2V0KCkpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5
KTsKKyAgICBDR1JlY3QgZGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKTsK
KyAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgZGVzdGluYXRpb25S
ZWN0LCBpbWFnZS5nZXQoKSk7CisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENv
bG9yKDAsIDAsIDAsIDApOworCisgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4
ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxb
M10sIHBpeGVsWzNdKTsKK30KKyAgICAKK30KKworI2VuZGlmIC8vIFVTRShDRykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280332</attachid>
            <date>2016-06-02 08:51:51 -0700</date>
            <delta_ts>2016-06-02 09:04:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160602085313.patch</filename>
            <type>text/plain</type>
            <size>37822</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI4MTFmMWRjMDU4MjZk
ZTFjNzNmMDE3OGI1NDRlMzZiM2Y3MzA2Mi4uMmIxNjc3ZjE1NzljMGViNmUwMWYyNmMwOTQ3NGQ1
ZmM0ZGQ4ZDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE2LTA2LTAyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgUmVuYW1l
IEZyYW1lRGF0YSB0byBJbWFnZUZyYW1lRGF0YSBhbmQgbW92ZSBpdCB0byBhIHNlcGFyYXRlIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ0
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
SW1hZ2VGcmFtZURhdGEgdG8gYSBzZXBhcmF0ZSBmaWxlIHNvIGl0IGNhbiBiZSBjYWNoZWQgYnkg
SW1hZ2VTb3VyY2UKKyAgICAgICAgYW5kIHdpbGwgc3RpbGwgYmUgY29uc3VtZWQgYnkgQml0bWFw
SW1hZ2UuIE1ha2UgdGhlIGRhdGEgbWVtYmVycyBvZiBJbWFnZUZyYW1lRGF0YQorICAgICAgICBi
ZSBwcml2YXRlIGFuZCBhZGQgZ2V0dGVycyB0byByZXR1cm4gdGhlaXIgdmFsdWVzLgorICAgICAg
ICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEluY2x1ZGUgSW1hZ2VGcmFtZURhdGEgc291cmNl
IGFuZCBoZWFkZXIgZmlsZXMgaW4gdGhlIFdlYktpdCBwcm9qZWN0cy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZSk6IEZpbGluZyB0aGUgRnJhbWVEYXRhIGNhY2hlZCB2YWx1ZXMK
KyAgICAgICAgd2FzIG1vdmVkIHRvIHRoZSBJbWFnZUZyYW1lRGF0YSBjb25zdHJ1Y3Rvci4KKwor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6IFVz
ZSBJbWFnZUZyYW1lRGF0YSBwdWJsaWMKKyAgICAgICAgZ2V0dGVycyBpbnN0ZWFkIG9mIGFjY2Vz
c2luZyB0aGUgZGF0YSBtZW1iZXJzIGRpcmVjdGx5LgorCisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKTogSW1hZ2VGcmFtZURhdGE6OmNsZWFyKCkgbm93
CisgICAgICAgIHJldHVybnMgdGhlIGZyYW1lIGRhdGEgc2l6ZS4KKworICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KTogTW9kZXJuaXpl
IHRoZSBmb3ItbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1l
KTogIEZpbGluZyB0aGUgRnJhbWVEYXRhIGNhY2hlZCB2YWx1ZXMKKyAgICAgICAgd2FzIG1vdmVk
IHRvIHRoZSBJbWFnZUZyYW1lRGF0YSBjb25zdHJ1Y3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKTogTW9kZXJuaXplIHRoZSBmb3ItbG9vcCBhbmQgdXNl
IHRoZQorICAgICAgICByZXR1cm4gb2YgSW1hZ2VGcmFtZURhdGE6OmNsZWFyKCkuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIFVzZSBJbWFn
ZUZyYW1lRGF0YSBwdWJsaWMgZ2V0dGVycyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyB0aGUgZGF0YSBt
ZW1iZXJzIGRpcmVjdGx5LgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2luZ2xl
UGl4ZWxTb2xpZENvbG9yKTogR2V0IHRoZSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IgZnJvbQorICAg
ICAgICB0aGUgZmlyc3QgSW1hZ2VGcmFtZURhdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURh
dGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6dXNlZEZyYW1lQnl0ZXMpOiBE
ZWxldGVkLgorICAgICAgICBEZWxldGUgRnJhbWVEYXRhIGZyb20gdGhpcyBoZWFkZXIgZmlsZS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEpOiBUd28g
Y29uc3RydWN0b3JzIHdlcmUgYWRkZWQgdG8KKyAgICAgICAgdGhpcyBjbGFzcy4gT25lIGlzIGZv
ciB0aGUgY2FzZSBvZiBhbiBpbWFnZSBmcmFtZSB3aGljaCBoYXMgdG8gYmUgY3JlYXRlZAorICAg
ICAgICBieSBhIGRlY29kZXIuIFRoZSBvdGhlciBjb25zdHJ1Y3RvciBpcyBmb3IgdGhlIGNhc2Ug
b2YgYSBCaXRtYXBJbWFnZQorICAgICAgICBpbml0aWFsaXplZCB3aXRoIGEgc2luZ2xlIG5hdGl2
ZSBpbWFnZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1l
RGF0YSk6IENsZWFycyB0aGUgc3ViLWltYWdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpjbGVhcik6IENsZWFycyBlaXRoZXIgdGhlIGltYWdlIG9yIHRoZSBtZXRhZGF0YSBv
ciBib3RoLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29s
aWRDb2xvcik6IFJldHVybnMgdGhlIHNpbmdsZSBwaXhlbAorICAgICAgICBzb2xpZCBjb2xvciBv
cHRpbWl6YXRpb24gaWYgaXQgYXBwbGllcy4gT3RoZXJ3aXNlIGl0IHJldHVybnMgYW4gaW52YWxp
ZCBDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
RGF0YTo6ZnJhbWVCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Om9yaWVudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzdWJzYW1wbGluZ0xldmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lRGF0YTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZURhdGE6Omhhc0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNN
ZXRhZGF0YSk6CisgICAgICAgIEltYWdlRnJhbWVEYXRhIHB1YmxpYyBnZXR0ZXJzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lRGF0YUF0SW5kZXgpOiBDcmVhdGVzIGFuIEltYWdl
RnJhbWVEYXRhIGdpdmVuIGl0cyBpbmRleC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmg6IFVzZSB0aGUgZW51bSB2YWx1ZSAnRGVmYXVsdFN1YnNhbXBsaW5nTGV2
ZWwnCisgICAgICAgIGluc3RlYWQgb2YgdXNpbmcgJzAnIGZvciBjbGFyaXR5LgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXIpOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90aGlu
ZyBmb3IgdGhlIENhaXJvIHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFy
KTogRGVsZXRlZC4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3YXMgZGVsZXRlZCBiZWNhdXNlIElt
YWdlRnJhbWVEYXRhOjpjbGVhcigpIGlzIG5vdyBhIHBsYXRmb3JtCisgICAgICAgIGluZGVwZW5k
ZW50IGZ1bmN0aW9uLiBUaGUgcGxhdGZvcm0gY29kZSBpcyBtb3ZlZCB0byBOYXRpdmVJbWFnZTo6
Y2xlYXIoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNsZWFyKTogRGVsZXRlcyB0aGUg
c3ViLWltYWdlcy4KKworICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxl
ZEZyYW1lSW1hZ2VBdEluZGV4KTogVXNlIEltYWdlRnJhbWVEYXRhIHB1YmxpYworICAgICAgICBn
ZXR0ZXJzIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSBkYXRhIG1lbWJlcnMgZGlyZWN0bHkuCisK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGlzIGRlbGV0ZWQgYmVjYXVzZSBJbWFnZUZyYW1lRGF0YTo6Y2xlYXIoKSBp
cyBhIHBsYXRmb3JtIGluZGVwZW5kZW50CisgICAgICAgIGZ1bmN0aW9uLiBUaGUgcGxhdGZvcm0g
Y29kZSBpcyBtb3ZlZCB0byBOYXRpdmVJbWFnZTo6Y2xlYXIoKS4KKwogMjAxNi0wNS0yNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgogCiAgICAgICAgIEJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKSBjbGVhbnVwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDA3Y2IzMmI3MjZlNGIzNzM3YmM0NTU3ODJkMmY5ZDIwYWQyMTU1MTUuLmJkZjQzZDI1MTVl
N2FjZDYwMWUxYmQ2NTMzODU0ZTYxMWE2MTdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MjE4LDYgKzIyMTgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSVNPVlRUQ3VlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVEYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjI5YTQ0YjQyM2Y0ZmJhZmRlYTI5OTI3ZjA4YzZm
MGMwMGJiZjYyMi4uOWUxNjIzMzI0MjZjM2QyOGZjMGFlYjVkZGI3NzFlM2JhMTJkMjQyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjI3OSw2ICsyMjc5LDggQEAKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1Qjg3RUMxQ0FBRjBBQjAw
MzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29k
ZXJDRy5jcHAgKi87IH07CiAJCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29k
ZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1
Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07CisJCTU1OTA1
Qjk2MUNGNzgyRjYwMEEwRDcyMyAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTkwNUI5NDFDRjc4MkY2MDBBMEQ3MjMg
LyogSW1hZ2VGcmFtZURhdGEuY3BwICovOyB9OworCQk1NTkwNUI5NzFDRjc4MkY2MDBBMEQ3MjMg
LyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1OTA1Qjk1MUNGNzgyRjYwMEEwRDcyMyAvKiBJbWFnZUZyYW1lRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MkE3RjIx
MUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyQTdGMjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNp
bXVsYXRlZENsaWNrLmggKi87IH07CiAJCTU3MkE3RjIzMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11
bGF0ZWRDbGljay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovOyB9
OwogCQk1ODAzNzE2MTFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgwMzcxNUYxQTY2RjAwQTAwQkFG
NTE5IC8qIENsaXBSZWN0LmNwcCAqLzsgfTsKQEAgLTk4NzQsNiArOTg3Niw4IEBACiAJCTU1MEEw
QkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1NUI4
N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURlY29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJD
Ry5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTkwNUI5NDFDRjc4MkY2MDBBMEQ3MjMgLyog
SW1hZ2VGcmFtZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW1hZ2VGcmFtZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTkwNUI5
NTFDRjc4MkY2MDBBMEQ3MjMgLyogSW1hZ2VGcmFtZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTVENDA4RjcxQTdDNjMxODAwQzc4NDUwIC8qIFNWR0ltYWdlQ2xpZW50cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdJbWFnZUNsaWVudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcyQTdGMjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRl
ZENsaWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVsYXRlZENsaWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkE3RjIyMUM2RTVBNjYwMDlDNjE0
OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaW11bGF0ZWRDbGljay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTk5NCw2ICsyMTk5OCw4IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdl
QnVmZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZm
ZXIuaCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRh
LmggKi8sCisJCQkJNTU5MDVCOTQxQ0Y3ODJGNjAwQTBENzIzIC8qIEltYWdlRnJhbWVEYXRhLmNw
cCAqLywKKwkJCQk1NTkwNUI5NTFDRjc4MkY2MDBBMEQ3MjMgLyogSW1hZ2VGcmFtZURhdGEuaCAq
LywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovLAog
CQkJCUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCAqLywK
IAkJCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovLApA
QCAtMjU5ODMsNiArMjU5ODksNyBAQAogCQkJCTlCQUI2QzZDMTI1NTA2MzEwMDE2MjZENCAvKiBF
ZGl0aW5nU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMzA0M0NEMEFFMDM3M0IwMEE4MjY0
NyAvKiBFZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjMyNjc5MEQ3OEI5NDQwMDY4RjBD
NCAvKiBFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1OTA1Qjk3MUNGNzgyRjYw
MEEwRDcyMyAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEJBRTk1QjEw
QjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNGREFGQ0EwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDNEE4MDcwOUQ1NjMyNzAwMDNBQzhEIC8qIEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzAxNjgsNiArMzAxNzUsNyBAQAogCQkJCUZEQTE1RTlGMTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGREExNUVBNTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkRFQUFBRjQxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU1OTA1Qjk2MUNGNzgyRjYwMEEwRDcyMyAvKiBJ
bWFnZUZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVBNzEyQjAzRUUxMDAz
QTU4M0EgLyogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
REExNUVBRDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0xpc3RlbmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZEQTE1RUFGMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTm9kZS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcAppbmRleCA2N2NlNjJjZTIzMTZkY2IzYjcwZGMwMjNmYmVjNDExYTFmM2JjNzNl
Li41MDg4ODczOTgyMmQ4NTk0Nzk2MzhlYTFiMTc5N2NlOTExYzM4MGY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC02OCwxNSAr
NjgsMTMgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2Us
IEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQog
ICAgICwgbV9hbmltYXRpb25GaW5pc2hlZFdoZW5DYXRjaGluZ1VwKGZhbHNlKQogeworICAgIG1f
ZnJhbWVzLmdyb3coMSk7CisgICAgbV9mcmFtZXNbMF0gPSBJbWFnZUZyYW1lRGF0YShpbWFnZSk7
CisgICAgCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0IGZp
Z3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNwZWN0
aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4MC4K
LSAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBOYXRpdmVJbWFnZTo6
c2l6ZShpbWFnZSk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXplID0g
bV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgpICog
NDsKLSAgICAKLSAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFzQWxw
aGEgPSBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1faGF2
ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShpbWFn
ZSk7CiB9CiAKIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQpAQCAtMTA1LDcgKzEwMyw3IEBA
IGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiAg
ICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2ZyYW1l
c1tpbmRleF0uaGFzSW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xlU2Vj
dXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTI1LDkgKzEyMyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIC8vIFRoZSB1bmRl
cmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBqdXN0IHRyeWluZyB0
bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRhKSwg
c28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCi0gICAg
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0gICAg
ICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCi0gICAgICAgICAgICBmcmFtZUJ5dGVz
Q2xlYXJlZCArPSBmcmFtZUJ5dGVzOworICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBtX2Zy
YW1lc1tpXS5jbGVhcihDYWNoZU1ldGFkYXRhKTsKICAgICB9CiAKICAgICBtX3NvdXJjZS5jbGVh
cihkZXN0cm95QWxsLCBjbGVhckJlZm9yZUZyYW1lLCBkYXRhKCksIG1fYWxsRGF0YVJlY2VpdmVk
KTsKQEAgLTE1MCw4ICsxNDYsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVu
c2lnbmVkIGFsbEZyYW1lQnl0ZXMgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9m
cmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGFsbEZyYW1lQnl0ZXMgKz0gbV9mcmFtZXNbaV0u
dXNlZEZyYW1lQnl0ZXMoKTsKKyAgICBmb3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpCisgICAg
ICAgIGFsbEZyYW1lQnl0ZXMgKz0gZnJhbWUuZnJhbWVCeXRlcygpOwogCiAgICAgaWYgKGFsbEZy
YW1lQnl0ZXMgPiBsYXJnZUFuaW1hdGlvbkN1dG9mZikgewogICAgICAgICBMT0coSW1hZ2VzLCAi
Qml0bWFwSW1hZ2UgJXAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkgZGVzdHJveWluZ0Rh
dGE6IGFsbEZyYW1lQnl0ZXM9JXUgY3V0b2ZmPSV1IiwgdGhpcywgYWxsRnJhbWVCeXRlcywgbGFy
Z2VBbmltYXRpb25DdXRvZmYpOwpAQCAtMTg1LDI1ICsxODEsMTIgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBt
X2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hl
TWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSA9IG1f
c291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsK
LSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5n
TGV2ZWw7Ci0gICAgfQotCi0gICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3Nv
dXJjZS5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2hh
dmVNZXRhZGF0YSA9IHRydWU7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSA9IG1f
c291cmNlLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOwotCi0gICAgaWYgKHJlcGV0aXRp
b25Db3VudChmYWxzZSkgIT0gY0FuaW1hdGlvbk5vbmUpCi0gICAgICAgIG1fZnJhbWVzW2luZGV4
XS5tX2R1cmF0aW9uID0gbV9zb3VyY2UuZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOwotCi0g
ICAgbV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJ
bmRleChpbmRleCk7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcyA9IG1fc291cmNl
LmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBtX2ZyYW1l
c1tpbmRleF0gPSBtX3NvdXJjZS5jcmVhdGVGcmFtZURhdGFBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBmcmFtZUNhY2hpbmcpOwogCi0gICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdl
ICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0ZSAlZCkiLCB0aGlzLCBpbmRl
eCwgZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFPbmx5ID8gIm1ldGFkYXRhIG9ubHksICIg
OiAiIiwgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcywgbV9mcmFtZXNbaW5kZXhdLm1faXND
b21wbGV0ZSk7CisgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1
ICglcyV1IGJ5dGVzLCBjb21wbGV0ZSAlZCkiLCB0aGlzLCBpbmRleCwgZnJhbWVDYWNoaW5nID09
IENhY2hlTWV0YWRhdGEgPyAibWV0YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0u
ZnJhbWVCeXRlcygpLCBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIGlmICht
X2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVD
YXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcyk7CisgICAgaWYgKG1fZnJhbWVz
W2luZGV4XS5oYXNJbWFnZSgpKSB7CisgICAgICAgIGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8
aW50PihtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRlcygpKTsKICAgICAgICAgbV9kZWNvZGVkU2l6
ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBUaGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxs
IHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGRhdGEgdXNlZAogICAgICAgICAvLyB0byBk
ZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KQEAgLTI4OCwxMyArMjcxLDEyIEBAIGJvb2wgQml0
bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIGZyYW1l
IGFmZmVjdGVkIGJ5IGFwcGVuZGluZyBuZXcgZGF0YSBoZXJlLiBUaHVzIHdlIGhhdmUgdG8gY2xl
YXIgYWxsIHRoZQogICAgIC8vIGluY29tcGxldGUgZnJhbWVzIHRvIGJlIHNhZmUuCiAgICAgdW5z
aWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9mcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMp
IHsKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2FsbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkg
aGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAgICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChp
LmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAgLy8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBh
c3MpIGZyYW1lcyEKLSAgICAgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1f
ZnJhbWVCeXRlczsKLSAgICAgICAgaWYgKG1fZnJhbWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFt
X2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCAr
PSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBmcmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlm
IChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFtZS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAg
ICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5jbGVhcihDYWNoZU5vbmUpOwogICAgIH0KICAg
ICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3Vy
Y2U6Ok5vKTsKICNlbHNlCkBAIC0zNzIsOCArMzU0LDggQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZW5z
dXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2Fj
aGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNp
emUoKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAm
JiAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0g
Q2FjaGVNZXRhZGF0YU9ubHkgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkpCisg
ICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEltYWdlICYmICFtX2Zy
YW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNo
ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkpCiAgICAgICAgIGNh
Y2hlRnJhbWUoaW5kZXgsIDAsIGZyYW1lQ2FjaGluZyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTM4OCwxMCArMzcwLDkgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2MKIAogICAgIC8vIFdlIG1h
eSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBoaWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGlu
IHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8vIHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2
ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5t
X2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGlu
Z0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2lu
ZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vi
c2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNh
Y2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUsIHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9u
LgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1tX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVz
OwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xlYXIodHJ1ZSk7CisgICAgICAgIGludCBzaXpl
Q2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5jbGVhcihDYWNoZU5vbmUpOwogICAgICAgICBpbnZh
bGlkYXRlUGxhdGZvcm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6ZUNoYW5n
ZTsKICAgICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKQEAgLTM5OSwyNiArMzgwLDI2IEBAIE5h
dGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IGZsb2F0IHByZXNlbnRhdGlvblNjCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRj
aGVkIGEgZnJhbWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgp
IHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwg
c3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBpZiAoaW5kZXgg
Pj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAg
ICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZElt
YWdlKTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKKyAgICByZXR1cm4g
bV9mcmFtZXNbaW5kZXhdLmltYWdlKCk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0Nh
Y2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0Nh
Y2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pc0NvbXBsZXRlOworICAgIHJldHVybiBtX2ZyYW1l
c1tpbmRleF0uaXNDb21wbGV0ZSgpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hl
ZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hl
ZChpbmRleCwgQ2FjaGVNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
ZHVyYXRpb24oKTsKIH0KIAogTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkKQEAgLTQyOCwxMSArNDA5LDExIEBAIE5hdGl2ZUltYWdlUHRyIEJp
dG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiAKIGJvb2wgQml0bWFwSW1h
Z2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3Vy
ZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3Vy
ZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpCi0gICAgICAgIHJl
dHVybiBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYTsKKyAgICBpZiAobV9mcmFtZXNbaW5kZXhd
Lmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaGFzQWxwaGEo
KTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CiB9
CkBAIC00NDQsMTEgKzQyNSwxMSBAQCBib29sIEJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVLbm93
blRvQmVPcGFxdWUoKQogCiBJbWFnZU9yaWVudGF0aW9uIEJpdG1hcEltYWdlOjpmcmFtZU9yaWVu
dGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2Fj
aGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2Fj
aGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhKSkKICAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRp
b24oKTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpCi0gICAgICAg
IHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9vcmllbnRhdGlvbjsKKyAgICBpZiAobV9mcmFtZXNb
aW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ub3Jp
ZW50YXRpb24oKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5vcmllbnRhdGlvbkF0SW5kZXgoaW5k
ZXgpOwogfQpAQCAtNzAwLDcgKzY4MSw3IEBAIENvbG9yIEJpdG1hcEltYWdlOjpzaW5nbGVQaXhl
bFNvbGlkQ29sb3IoKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKICAgICAKICAgICBBU1NFUlQo
bV9mcmFtZXMuc2l6ZSgpKTsKLSAgICBtX3NvbGlkQ29sb3IgPSBOYXRpdmVJbWFnZTo6c2luZ2xl
UGl4ZWxTb2xpZENvbG9yKG1fZnJhbWVzWzBdLm1faW1hZ2UuZ2V0KCkpOworICAgIG1fc29saWRD
b2xvciA9IG1fZnJhbWVzWzBdLnNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogICAgIAogICAgIEFT
U0VSVChtX3NvbGlkQ29sb3IpOwogICAgIHJldHVybiBtX3NvbGlkQ29sb3IudmFsdWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDA3
NTg5MjljZDg3ZmFkYWNmMDJiNmVkOGVlYWZlN2RlZmQ2NmYwYzUuLmMwNDBlNDBhODlkYWI0ODEw
MTFhMWRhMTJjNWM3NDljYzQyNDE2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMjgsOCArMjgsOSBAQAogI2lmbmRlZiBCaXRtYXBJ
bWFnZV9oCiAjZGVmaW5lIEJpdG1hcEltYWdlX2gKIAotI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5j
bHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVE
YXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291
cmNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgpAQCAtNDYsNjQgKzQ3LDE2IEBAIE9CSkNfQ0xB
U1MgTlNJbWFnZTsKIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgc3RydWN0IEZyYW1lRGF0YTsKLX0KLQogbmFtZXNw
YWNlIFdURiB7Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZy
YW1lRGF0YT4gOiBwdWJsaWMgU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxs
IEZyYW1lRGF0YSBtZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KLSAgICB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhPiA6IHB1YmxpYyBTaW1w
bGVDbGFzc1ZlY3RvclRyYWl0cyB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuSW5pdGlhbGl6
ZVdpdGhNZW1zZXQgPSBmYWxzZTsgLy8gTm90IGFsbCBJbWFnZUZyYW1lRGF0YSBtZW1iZXJzIGlu
aXRpYWxpemUgdG8gMC4KK307CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGlt
ZXI7CiAKLW5hbWVzcGFjZSBOYXRpdmVJbWFnZSB7Ci0gICAgSW50U2l6ZSBzaXplKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJik7Ci0gICAgYm9vbCBoYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYp
OwotICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYp
OwotfQotCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS8vIEZyYW1lRGF0YSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0KLXN0cnVjdCBGcmFtZURhdGEgewotcHVibGljOgotICAgIEZy
YW1lRGF0YSgpCi0gICAgICAgIDogbV9oYXZlTWV0YWRhdGEoZmFsc2UpCi0gICAgICAgICwgbV9p
c0NvbXBsZXRlKGZhbHNlKQotICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgfkZyYW1lRGF0YSgpCi0gICAgeyAKLSAgICAgICAgY2xlYXIodHJ1ZSk7Ci0gICAg
fQotCi0gICAgLy8gQ2xlYXIgdGhlIGNhY2hlZCBpbWFnZSBkYXRhIG9uIHRoZSBmcmFtZSwgYW5k
IChvcHRpb25hbGx5KSB0aGUgbWV0YWRhdGEuCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJl
IHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4KLSAgICBib29sIGNsZWFyKGJvb2wgY2xl
YXJNZXRhZGF0YSk7Ci0gICAgCi0gICAgdW5zaWduZWQgdXNlZEZyYW1lQnl0ZXMoKSBjb25zdCB7
IHJldHVybiBtX2ltYWdlID8gbV9mcmFtZUJ5dGVzIDogMDsgfQotCi0gICAgTmF0aXZlSW1hZ2VQ
dHIgbV9pbWFnZTsKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0
SW1hZ2VPcmllbnRhdGlvbiB9OwotICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xl
dmVsIHsgMCB9OwotICAgIGZsb2F0IG1fZHVyYXRpb24geyAwIH07Ci0gICAgYm9vbCBtX2hhdmVN
ZXRhZGF0YSA6IDE7Ci0gICAgYm9vbCBtX2lzQ29tcGxldGUgOiAxOwotICAgIGJvb2wgbV9oYXNB
bHBoYSA6IDE7Ci0gICAgdW5zaWduZWQgbV9mcmFtZUJ5dGVzIHsgMCB9OwotfTsKLQotLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gQml0bWFw
SW1hZ2UgQ2xhc3MKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLQogY2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogICAg
IGZyaWVuZCBjbGFzcyBHZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U7CkBAIC0yMjUsMTEgKzE3OCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSW1h
Z2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpOwogCiAgICAgLy8g
RGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUuIE5ldmVyIGFjY2Vzc2VkIGV4Y2VwdCBpbnRlcm5h
bGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeyBDYWNoZU1ldGFkYXRhT25seSwgQ2Fj
aGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAgdm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJh
bWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWws
IEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEltYWdlKTsKIAogICAgIC8vIENh
bGxlZCBiZWZvcmUgYWNjZXNzaW5nIG1fZnJhbWVzW2luZGV4XSBmb3IgaW5mbyB3aXRob3V0IGRl
Y29kaW5nLiBSZXR1cm5zIGZhbHNlIG9uIGluZGV4IG91dCBvZiBib3VuZHMuCi0gICAgYm9vbCBl
bnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNo
ZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIGJvb2wgZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3Qg
aW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEltYWdlKTsKIAogICAg
IC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0cm95QWxsfCBp
cyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVmZmVyIGNhY2hl
IGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMjkyLDcgKzI0NCw3IEBA
IHByaXZhdGU6CiAgICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlv
bjsKIAogICAgIHNpemVfdCBtX2N1cnJlbnRGcmFtZSB7IDAgfTsgLy8gVGhlIGluZGV4IG9mIHRo
ZSBjdXJyZW50IGZyYW1lIG9mIGFuaW1hdGlvbi4KLSAgICBWZWN0b3I8RnJhbWVEYXRhLCAxPiBt
X2ZyYW1lczsgLy8gQW4gYXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlv
bi4gV2UgaGF2ZSB0byByZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KKyAgICBW
ZWN0b3I8SW1hZ2VGcmFtZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2Fj
aGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGlu
IHRoZW0gaW4gdGhlIGNhY2hlLgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2ZyYW1l
VGltZXI7CiAgICAgaW50IG1fcmVwZXRpdGlvbkNvdW50IHsgY0FuaW1hdGlvbk5vbmUgfTsgLy8g
SG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4gVGhpcyB3aWxsIGJl
IGNBbmltYXRpb25Ob25lIGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0
aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFt
ZURhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YmQwMzJjMWFmMzgxZDY5YTIxNmVhYjQzMzRjOWYxMWYw
YTNlODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUZyYW1lRGF0YS5jcHAKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW1hZ2VGcmFtZURhdGEuaCIKKworI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29k
ZXJDRy5oIgorI2Vsc2UKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoKQor
eworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQorICAgIDogbV9zdGF0dXMoRnJhbWVDb21wbGV0ZSkKKyAgICAsIG1fc2l6ZShO
YXRpdmVJbWFnZTo6c2l6ZShpbWFnZSkpCisgICAgLCBtX2ltYWdlKGltYWdlKQorICAgICwgbV9o
YXNBbHBoYShOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpKQoreworfQorCitJbWFnZUZyYW1l
RGF0YTo6SW1hZ2VGcmFtZURhdGEoSW1hZ2VEZWNvZGVyJiBkZWNvZGVyLCBzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJh
bWVDYWNoaW5nKQoreworICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgJiBDYWNoZU1ldGFkYXRhKTsK
KyAgICAKKyAgICBpZiAoZnJhbWVDYWNoaW5nICYgQ2FjaGVJbWFnZSkgeworICAgICAgICBtX2lt
YWdlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdM
ZXZlbCk7CisgICAgICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Cisg
ICAgfQorICAgIAorICAgIGlmIChmcmFtZUNhY2hpbmcgJiBDYWNoZU1ldGFkYXRhKSB7CisgICAg
ICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Cisg
ICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSA/
IEZyYW1lQ29tcGxldGUgOiBGcmFtZVBhcnRpYWw7CisgICAgICAgIAorICAgICAgICBpZiAoZGVj
b2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkKKyAgICAgICAgICAgIG1f
ZHVyYXRpb24gPSBkZWNvZGVyLmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKKyAgICAgICAg
CisgICAgICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4
KTsKKyAgICAgICAgbV9zaXplID0gZGVjb2Rlci5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJz
YW1wbGluZ0xldmVsKTsKKyAgICB9Cit9CisKK0ltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURh
dGEoKQoreworICAgIE5hdGl2ZUltYWdlOjpjbGVhcihtX2ltYWdlKTsKK30KKwordW5zaWduZWQg
SW1hZ2VGcmFtZURhdGE6OmNsZWFyKEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sK
KyAgICBBU1NFUlQoIShmcmFtZUNhY2hpbmcgJiBDYWNoZUltYWdlKSk7CisKKyAgICB1bnNpZ25l
ZCBmcmFtZUJ5dGVzID0gdGhpcy0+ZnJhbWVCeXRlcygpOworICAgIAorICAgIE5hdGl2ZUltYWdl
OjpjbGVhcihtX2ltYWdlKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTm9u
ZSkKKyAgICAgICAgKnRoaXMgPSBJbWFnZUZyYW1lRGF0YSgpOworICAgIGVsc2UKKyAgICAgICAg
bV9pbWFnZSA9IG51bGxwdHI7CisgICAgCisgICAgcmV0dXJuIGZyYW1lQnl0ZXM7Cit9CisKK0Nv
bG9yIEltYWdlRnJhbWVEYXRhOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAg
IGlmICghaGFzSW1hZ2UoKSB8fCBtX3NpemUgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICAgICAgcmV0
dXJuIENvbG9yKCk7CisgICAgCisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNv
bGlkQ29sb3IobV9pbWFnZSk7Cit9CisgICAgCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTJhZTk0YTVkYzRh
ZTU3M2JjN2Q5MjQ2ODU1OWEwNGZkOGU1MjU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaApAQCAtMCwwICsxLDEwMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEltYWdlRnJhbWVEYXRhX2gKKyNkZWZpbmUgSW1hZ2VGcmFtZURhdGFfaAorCisjaW5jbHVkZSAi
Q29sb3IuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW50U2l6
ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KyAgICAKKy8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAgaXMgbm8gc3Vic2FtcGxpbmcsIDEgaXMgaGFs
ZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMuCit0eXBlZGVmIHNob3J0IFN1YnNhbXBsaW5n
TGV2ZWw7CisKK2NvbnN0IFN1YnNhbXBsaW5nTGV2ZWwgTWluU3Vic2FtcGxpbmdMZXZlbCA9IDA7
Citjb25zdCBTdWJzYW1wbGluZ0xldmVsIE1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzOworY29uc3Qg
U3Vic2FtcGxpbmdMZXZlbCBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCA9IE1pblN1YnNhbXBsaW5n
TGV2ZWw7CisKK2VudW0gSW1hZ2VGcmFtZUNhY2hpbmcgeworICAgIENhY2hlTm9uZSwKKyAgICBD
YWNoZU1ldGFkYXRhLAorICAgIENhY2hlSW1hZ2UsCisgICAgQ2FjaGVNZXRhZGF0YUFuZEltYWdl
Cit9OworCitlbnVtIEltYWdlRnJhbWVTdGF0dXMgeworICAgIEZyYW1lRW1wdHksCisgICAgRnJh
bWVQYXJ0aWFsLAorICAgIEZyYW1lQ29tcGxldGUKK307CisgICAgCituYW1lc3BhY2UgTmF0aXZl
SW1hZ2UgeworSW50U2l6ZSBzaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Citib29sIGhhc0Fs
cGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CitDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3Io
Y29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKK3ZvaWQgY2xlYXIoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
KTsKK30KKworY2xhc3MgSW1hZ2VEZWNvZGVyOworCitjbGFzcyBJbWFnZUZyYW1lRGF0YSB7Citw
dWJsaWM6CisgICAgSW1hZ2VGcmFtZURhdGEoKTsKKyAgICBJbWFnZUZyYW1lRGF0YShjb25zdCBO
YXRpdmVJbWFnZVB0ciYpOworICAgIEltYWdlRnJhbWVEYXRhKEltYWdlRGVjb2RlciYsIHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsLCBJbWFn
ZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRJbWFnZSk7CisgICAgCisgICAgfkltYWdl
RnJhbWVEYXRhKCk7CisgICAgCisgICAgdW5zaWduZWQgY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmcp
OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworICAgIAorICAgIElt
YWdlRnJhbWVTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKyAgICBi
b29sIGlzQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBGcmFtZUNvbXBsZXRl
OyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdW5z
aWduZWQgZnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIGhhc0ltYWdlKCkgPyBtX3NpemUuYXJl
YSgpICogNCA6IDA7IH0KKyAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2U7IH0KKyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2Ft
cGxpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2FtcGxpbmdMZXZlbDsgfQorICAgIGZs
b2F0IGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQorICAgIAorICAgIGJv
b2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2hhc0FscGhhOyB9CisgICAgYm9vbCBoYXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICBib29sIGhhc01ldGFkYXRhKCkg
Y29uc3QgeyByZXR1cm4gIW1fc2l6ZS5pc0VtcHR5KCk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAg
SW1hZ2VGcmFtZVN0YXR1cyBtX3N0YXR1cyB7IEZyYW1lRW1wdHkgfTsKKyAgICBJbnRTaXplIG1f
c2l6ZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIAorICAgIEltYWdlT3JpZW50
YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07CisgICAgU3Vi
c2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07CisgICAgZmxvYXQgbV9kdXJh
dGlvbiB7IDAgfTsKKyAgICBib29sIG1faGFzQWxwaGEgeyB0cnVlIH07Cit9OworICAgIAorfQor
CisjZW5kaWYgLy8gSW1hZ2VGcmFtZURhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGRkZDhhNTViYTA5MDZjNTg2NmExOTJj
ZjhlNDE0ZWE3MDdiNzI4YWMuLjQzYjBmODcyZTBjNjA2YjcyNTIzYjEwMTA4NjRlNTdkYmNkYzkx
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKQEAgLTIyNCw2ICsyMjQsMTEgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXYKICAgICBy
ZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
aW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKIH0KIAorSW1hZ2VGcmFtZURhdGEg
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lRGF0YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGlu
ZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IEltYWdlRnJhbWVEYXRhKCptX2RlY29k
ZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBmcmFtZUNhY2hpbmcpIDogSW1hZ2VGcmFtZURh
dGEoKTsKK30KKyAgICAKIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNv
bnN0CiB7CiAgICAgaWYgKG1fYWxsb3dTdWJzYW1wbGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDYwMzU3MzliN2U4YjA5NmRjOGRm
ZTljNTMwYTQyYzZmMjkxYmRhMDAuLmJjYjhkMjY5NTBmMzM4YjVkNWJkNjI5NmNjZTcyMTUyYTY2
OWJjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBJbWFnZVNvdXJjZV9oCiAjZGVmaW5lIElt
YWdlU291cmNlX2gKIAorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1h
Z2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTmF0aXZl
SW1hZ2VQdHIuaCIKQEAgLTYzLDkgKzY0LDYgQEAgY29uc3QgaW50IGNBbmltYXRpb25Mb29wT25j
ZSA9IDA7CiBjb25zdCBpbnQgY0FuaW1hdGlvbkxvb3BJbmZpbml0ZSA9IC0xOwogY29uc3QgaW50
IGNBbmltYXRpb25Ob25lID0gLTI7CiAKLS8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAgaXMgbm8gc3Vi
c2FtcGxpbmcsIDEgaXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMuCi10eXBlZGVm
IHNob3J0IFN1YnNhbXBsaW5nTGV2ZWw7Ci0KIGNsYXNzIEltYWdlU291cmNlIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShJbWFnZVNvdXJjZSk7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcElt
YWdlOwpAQCAtMTMyLDE4ICsxMzAsMTkgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dTdWJzYW1w
bGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgCiAgICAgLy8gU2l6ZSBvZiBv
cHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51
bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OworICAgIEludFNpemUgZnJh
bWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxp
bmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbikgY29uc3Q7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0
ZXMgaW4gdGhlIGRlY29kZWQgZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0CiAgICAgLy8g
ZGVjb2RlZCB0aGVuIHJldHVybiAwLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApIGNvbnN0OworICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xl
dmVsKSBjb25zdDsKICAgICAKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qp
OwogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7
IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KICAgICAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBu
b3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4Owog
ICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOwor
ICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJbWFnZUZyYW1lRGF0
YSBjcmVhdGVGcmFtZURhdGFBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1
bHRTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRJ
bWFnZSk7CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNp
emVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCmluZGV4IDE3NzIyYmVjNTNhYjhhMDhhOGRhODUy
OGI5ZTBkN2M0ZDBjZDQxMzUuLmNlODFiMTRmMGE1ZjIxNmQ2MmJiYzE2NTRhNDljZjg1YTY0ZGEw
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Jp
dG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCkBAIC00MiwxOSArNDIsMTcgQEAgbmFtZXNwYWNl
IE5hdGl2ZUltYWdlIHsKIAogSW50U2l6ZSBzaXplKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+JiBpbWFnZSkKIHsKLSAgICByZXR1cm4gY2Fpcm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSk7
CisgICAgcmV0dXJuIGltYWdlID8gY2Fpcm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRT
aXplKCk7CiB9CiAKIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4m
IGltYWdlKQogewotICAgIHJldHVybiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KGltYWdlLmdl
dCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworICAgIHJldHVybiBpbWFnZSA/IGNhaXJvX3N1
cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1IgOiB0
cnVlOwogfQogCiBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4mIGltYWdlKQogewotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgCi0gICAgaWYg
KE5hdGl2ZUltYWdlOjpzaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQorICAgIGlmICghaW1h
Z2UgfHwgTmF0aXZlSW1hZ2U6OnNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAg
IHJldHVybiBDb2xvcigpOwogCiAgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2Uu
Z2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKQEAgLTY0LDYgKzYyLDEwIEBAIENv
bG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYg
aW1hZ2UpCiAgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7CiB9
CiAKK3ZvaWQgY2xlYXIoY29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mKQoreworfQorCiB9
CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLApAQCAtMTI1LDE4ICsxMjcsNiBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAg
ICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9CiAKLWJvb2wgRnJhbWVEYXRhOjpj
bGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAg
ICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBpZiAobV9pbWFnZSkgewotICAgICAg
ICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNF
KENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Qml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9C
aXRtYXBJbWFnZUNHLmNwcAppbmRleCAwM2M4MWExNzBiZTc5YWU2YmU2Y2FjZGM5OWY0YzM5OGNh
YWY0MjZkLi42NzY3ZGViYzE2OWFhZmFlYmRkYjg5NGY2NDU4ZjZkNzRkZWEzNTJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNH
LmNwcApAQCAtNTQsOCArNTQsNyBAQCBuYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewogCiBJbnRTaXpl
IHNpemUoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKIHsKLSAgICBBU1NFUlQo
aW1hZ2UpOwotICAgIHJldHVybiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSks
IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKTsKKyAgICByZXR1cm4gaW1hZ2UgPyBJbnRT
aXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2Uu
Z2V0KCkpKSA6IEludFNpemUoKTsKIH0KIAogYm9vbCBoYXNBbHBoYShjb25zdCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mKQpAQCAtNjYsOSArNjUsNyBAQCBib29sIGhhc0FscGhhKGNvbnN0IFJldGFp
blB0cjxDR0ltYWdlUmVmPiYpCiAgICAgCiBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29u
c3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKIHsKLSAgICBBU1NFUlQoaW1hZ2UpOwot
ICAgIAotICAgIGlmIChOYXRpdmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkK
KyAgICBpZiAoIWltYWdlIHx8IE5hdGl2ZUltYWdlOjpzaXplKGltYWdlKSAhPSBJbnRTaXplKDEs
IDEpKQogICAgICAgICByZXR1cm4gQ29sb3IoKTsKICAgICAKICAgICB1bnNpZ25lZCBjaGFyIHBp
eGVsWzRdOyAvLyBSR0JBCkBAIC04NywyMyArODQsMTYgQEAgQ29sb3Igc2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCiAgICAgcmV0dXJuIENv
bG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10s
IHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0KIAotfQotCi1ib29sIEZy
YW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQordm9pZCBjbGVhcihjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQogewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAg
ICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNlOwotCi0gICAgbV9zdWJzYW1wbGluZ0xldmVsID0g
MDsKLQotICAgIGlmIChtX2ltYWdlKSB7CiAjaWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAgIHN1
YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1faW1hZ2UuZ2V0KCkpOworICAgIGlmIChpbWFnZSkK
KyAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oaW1hZ2UpOwogI2VuZGlmCi0gICAgICAgIG1faW1hZ2UgPSBudWxs
cHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworfQor
CiB9CiAKIENHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYoKQpAQCAtMTkyLDEx
ICsxODIsMTEgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2Fs
ZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgaWYgKGluZGV4ID49IGZyYW1l
Q291bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoaW5kZXggPj0gbV9m
cmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKKyAgICBpZiAoaW5kZXgg
Pj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKICAgICAg
ICAgY2FjaGVGcmFtZShpbmRleCwgMCk7CiAKLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1
YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsK
KyAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5zdWJzYW1wbGluZ0xldmVsKCkpCisgICAgICAgIHJl
dHVybiBtX2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5jcmVh
dGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280334</attachid>
            <date>2016-06-02 09:04:26 -0700</date>
            <delta_ts>2016-06-21 17:28:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160602090548.patch</filename>
            <type>text/plain</type>
            <size>38251</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI4MTFmMWRjMDU4MjZk
ZTFjNzNmMDE3OGI1NDRlMzZiM2Y3MzA2Mi4uMmIxNjc3ZjE1NzljMGViNmUwMWYyNmMwOTQ3NGQ1
ZmM0ZGQ4ZDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE2LTA2LTAyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgUmVuYW1l
IEZyYW1lRGF0YSB0byBJbWFnZUZyYW1lRGF0YSBhbmQgbW92ZSBpdCB0byBhIHNlcGFyYXRlIGZp
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTQ0
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUg
SW1hZ2VGcmFtZURhdGEgdG8gYSBzZXBhcmF0ZSBmaWxlIHNvIGl0IGNhbiBiZSBjYWNoZWQgYnkg
SW1hZ2VTb3VyY2UKKyAgICAgICAgYW5kIHdpbGwgc3RpbGwgYmUgY29uc3VtZWQgYnkgQml0bWFw
SW1hZ2UuIE1ha2UgdGhlIGRhdGEgbWVtYmVycyBvZiBJbWFnZUZyYW1lRGF0YQorICAgICAgICBi
ZSBwcml2YXRlIGFuZCBhZGQgZ2V0dGVycyB0byByZXR1cm4gdGhlaXIgdmFsdWVzLgorICAgICAg
ICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEluY2x1ZGUgSW1hZ2VGcmFtZURhdGEgc291cmNl
IGFuZCBoZWFkZXIgZmlsZXMgaW4gdGhlIFdlYktpdCBwcm9qZWN0cy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpCaXRtYXBJbWFnZSk6IEZpbGluZyB0aGUgRnJhbWVEYXRhIGNhY2hlZCB2YWx1ZXMK
KyAgICAgICAgd2FzIG1vdmVkIHRvIHRoZSBJbWFnZUZyYW1lRGF0YSBjb25zdHJ1Y3Rvci4KKwor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6IFVz
ZSBJbWFnZUZyYW1lRGF0YSBwdWJsaWMKKyAgICAgICAgZ2V0dGVycyBpbnN0ZWFkIG9mIGFjY2Vz
c2luZyB0aGUgZGF0YSBtZW1iZXJzIGRpcmVjdGx5LgorCisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKTogSW1hZ2VGcmFtZURhdGE6OmNsZWFyKCkgbm93
CisgICAgICAgIHJldHVybnMgdGhlIGZyYW1lIGRhdGEgc2l6ZS4KKworICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KTogTW9kZXJuaXpl
IHRoZSBmb3ItbG9vcC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1l
KTogIEZpbGluZyB0aGUgRnJhbWVEYXRhIGNhY2hlZCB2YWx1ZXMKKyAgICAgICAgd2FzIG1vdmVk
IHRvIHRoZSBJbWFnZUZyYW1lRGF0YSBjb25zdHJ1Y3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKTogTW9kZXJuaXplIHRoZSBmb3ItbG9vcCBhbmQgdXNl
IHRoZQorICAgICAgICByZXR1cm4gb2YgSW1hZ2VGcmFtZURhdGE6OmNsZWFyKCkuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIFVzZSBJbWFn
ZUZyYW1lRGF0YSBwdWJsaWMgZ2V0dGVycyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyB0aGUgZGF0YSBt
ZW1iZXJzIGRpcmVjdGx5LgorCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2luZ2xl
UGl4ZWxTb2xpZENvbG9yKTogR2V0IHRoZSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IgZnJvbQorICAg
ICAgICB0aGUgZmlyc3QgSW1hZ2VGcmFtZURhdGEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURh
dGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6dXNlZEZyYW1lQnl0ZXMpOiBE
ZWxldGVkLgorICAgICAgICBEZWxldGUgRnJhbWVEYXRhIGZyb20gdGhpcyBoZWFkZXIgZmlsZS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEpOiBUd28g
Y29uc3RydWN0b3JzIHdlcmUgYWRkZWQgdG8KKyAgICAgICAgdGhpcyBjbGFzcy4gT25lIGlzIGZv
ciB0aGUgY2FzZSBvZiBhbiBpbWFnZSBmcmFtZSB3aGljaCBoYXMgdG8gYmUgY3JlYXRlZAorICAg
ICAgICBieSBhIGRlY29kZXIuIFRoZSBvdGhlciBjb25zdHJ1Y3RvciBpcyBmb3IgdGhlIGNhc2Ug
b2YgYSBCaXRtYXBJbWFnZQorICAgICAgICBpbml0aWFsaXplZCB3aXRoIGEgc2luZ2xlIG5hdGl2
ZSBpbWFnZS4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6On5JbWFnZUZyYW1l
RGF0YSk6IENsZWFycyB0aGUgc3ViLWltYWdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpjbGVhcik6IENsZWFycyBlaXRoZXIgdGhlIGltYWdlIG9yIHRoZSBtZXRhZGF0YSBv
ciBib3RoLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29s
aWRDb2xvcik6IFJldHVybnMgdGhlIHNpbmdsZSBwaXhlbAorICAgICAgICBzb2xpZCBjb2xvciBv
cHRpbWl6YXRpb24gaWYgaXQgYXBwbGllcy4gT3RoZXJ3aXNlIGl0IHJldHVybnMgYW4gaW52YWxp
ZCBDb2xvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1l
RGF0YTo6ZnJhbWVCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Om9yaWVudGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzdWJzYW1wbGluZ0xldmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUZyYW1lRGF0YTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZURhdGE6Omhhc0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNN
ZXRhZGF0YSk6CisgICAgICAgIEltYWdlRnJhbWVEYXRhIHB1YmxpYyBnZXR0ZXJzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lRGF0YUF0SW5kZXgpOiBDcmVhdGVzIGFuIEltYWdl
RnJhbWVEYXRhIGdpdmVuIGl0cyBpbmRleC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmg6IFVzZSB0aGUgZW51bSB2YWx1ZSAnRGVmYXVsdFN1YnNhbXBsaW5nTGV2
ZWwnCisgICAgICAgIGluc3RlYWQgb2YgdXNpbmcgJzAnIGZvciBjbGFyaXR5LgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y2xlYXIpOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90aGlu
ZyBmb3IgdGhlIENhaXJvIHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFy
KTogRGVsZXRlZC4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3YXMgZGVsZXRlZCBiZWNhdXNlIElt
YWdlRnJhbWVEYXRhOjpjbGVhcigpIGlzIG5vdyBhIHBsYXRmb3JtCisgICAgICAgIGluZGVwZW5k
ZW50IGZ1bmN0aW9uLiBUaGUgcGxhdGZvcm0gY29kZSBpcyBtb3ZlZCB0byBOYXRpdmVJbWFnZTo6
Y2xlYXIoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNsZWFyKTogRGVsZXRlcyB0aGUg
c3ViLWltYWdlcy4KKworICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxl
ZEZyYW1lSW1hZ2VBdEluZGV4KTogVXNlIEltYWdlRnJhbWVEYXRhIHB1YmxpYworICAgICAgICBn
ZXR0ZXJzIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSBkYXRhIG1lbWJlcnMgZGlyZWN0bHkuCisK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICBU
aGlzIGZ1bmN0aW9uIGlzIGRlbGV0ZWQgYmVjYXVzZSBJbWFnZUZyYW1lRGF0YTo6Y2xlYXIoKSBp
cyBhIHBsYXRmb3JtIGluZGVwZW5kZW50CisgICAgICAgIGZ1bmN0aW9uLiBUaGUgcGxhdGZvcm0g
Y29kZSBpcyBtb3ZlZCB0byBOYXRpdmVJbWFnZTo6Y2xlYXIoKS4KKwogMjAxNi0wNS0yNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgogCiAgICAgICAgIEJpdG1h
cEltYWdlOjpjaGVja0ZvclNvbGlkQ29sb3IoKSBjbGVhbnVwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDA3Y2IzMmI3MjZlNGIzNzM3YmM0NTU3ODJkMmY5ZDIwYWQyMTU1MTUuLmJkZjQzZDI1MTVl
N2FjZDYwMWUxYmQ2NTMzODU0ZTYxMWE2MTdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MjE4LDYgKzIyMTgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSVNPVlRUQ3VlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVEYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UG9pbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjI5YTQ0YjQyM2Y0ZmJhZmRlYTI5OTI3ZjA4YzZm
MGMwMGJiZjYyMi4uOWUxNjIzMzI0MjZjM2QyOGZjMGFlYjVkZGI3NzFlM2JhMTJkMjQyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjI3OSw2ICsyMjc5LDggQEAKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1Qjg3RUMxQ0FBRjBBQjAw
MzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29k
ZXJDRy5jcHAgKi87IH07CiAJCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29k
ZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1
Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07CisJCTU1OTA1
Qjk2MUNGNzgyRjYwMEEwRDcyMyAvKiBJbWFnZUZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTkwNUI5NDFDRjc4MkY2MDBBMEQ3MjMg
LyogSW1hZ2VGcmFtZURhdGEuY3BwICovOyB9OworCQk1NTkwNUI5NzFDRjc4MkY2MDBBMEQ3MjMg
LyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1OTA1Qjk1MUNGNzgyRjYwMEEwRDcyMyAvKiBJbWFnZUZyYW1lRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU3MkE3RjIx
MUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyQTdGMjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNp
bXVsYXRlZENsaWNrLmggKi87IH07CiAJCTU3MkE3RjIzMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11
bGF0ZWRDbGljay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzJBN0YyMjFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovOyB9
OwogCQk1ODAzNzE2MTFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgwMzcxNUYxQTY2RjAwQTAwQkFG
NTE5IC8qIENsaXBSZWN0LmNwcCAqLzsgfTsKQEAgLTk4NzQsNiArOTg3Niw4IEBACiAJCTU1MEEw
QkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1NUI4
N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURlY29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJD
Ry5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTkwNUI5NDFDRjc4MkY2MDBBMEQ3MjMgLyog
SW1hZ2VGcmFtZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW1hZ2VGcmFtZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NTkwNUI5
NTFDRjc4MkY2MDBBMEQ3MjMgLyogSW1hZ2VGcmFtZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTVENDA4RjcxQTdDNjMxODAwQzc4NDUwIC8qIFNWR0ltYWdlQ2xpZW50cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdJbWFnZUNsaWVudHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcyQTdGMjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRl
ZENsaWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVsYXRlZENsaWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkE3RjIyMUM2RTVBNjYwMDlDNjE0
OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaW11bGF0ZWRDbGljay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTk5NCw2ICsyMTk5OCw4IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdl
QnVmZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZm
ZXIuaCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRh
LmggKi8sCisJCQkJNTU5MDVCOTQxQ0Y3ODJGNjAwQTBENzIzIC8qIEltYWdlRnJhbWVEYXRhLmNw
cCAqLywKKwkJCQk1NTkwNUI5NTFDRjc4MkY2MDBBMEQ3MjMgLyogSW1hZ2VGcmFtZURhdGEuaCAq
LywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovLAog
CQkJCUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCAqLywK
IAkJCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovLApA
QCAtMjU5ODMsNiArMjU5ODksNyBAQAogCQkJCTlCQUI2QzZDMTI1NTA2MzEwMDE2MjZENCAvKiBF
ZGl0aW5nU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMzA0M0NEMEFFMDM3M0IwMEE4MjY0
NyAvKiBFZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjMyNjc5MEQ3OEI5NDQwMDY4RjBD
NCAvKiBFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1OTA1Qjk3MUNGNzgyRjYw
MEEwRDcyMyAvKiBJbWFnZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEJBRTk1QjEw
QjJGQTlDRTAwQUVEOEEwIC8qIEVkaXRvckRlbGV0ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNGREFGQ0EwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThDNEE4MDcwOUQ1NjMyNzAwMDNBQzhEIC8qIEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzAxNjgsNiArMzAxNzUsNyBAQAogCQkJCUZEQTE1RTlGMTJCMDNFRTEw
MDNBNTgzQSAvKiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGREExNUVBNTEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0NvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkRFQUFBRjQxMkIwMkVFNDAwRENGMzNCIC8qIEpTQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU1OTA1Qjk2MUNGNzgyRjYwMEEwRDcyMyAvKiBJ
bWFnZUZyYW1lRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREExNUVBNzEyQjAzRUUxMDAz
QTU4M0EgLyogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
REExNUVBRDEyQjAzRUUxMDAzQTU4M0EgLyogSlNBdWRpb0xpc3RlbmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZEQTE1RUFGMTJCMDNFRTEwMDNBNTgzQSAvKiBKU0F1ZGlvTm9kZS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcAppbmRleCA2N2NlNjJjZTIzMTZkY2IzYjcwZGMwMjNmYmVjNDExYTFmM2JjNzNl
Li5lMGFkOTkxMDY0NGU3NjQ4MDBhMTNjMTZiMjUwMDJmOTRiYzNmZDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC02OCwxNSAr
NjgsMTMgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2Us
IEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICwgbV9oYXZlRnJhbWVDb3VudCh0cnVlKQog
ICAgICwgbV9hbmltYXRpb25GaW5pc2hlZFdoZW5DYXRjaGluZ1VwKGZhbHNlKQogeworICAgIG1f
ZnJhbWVzLmdyb3coMSk7CisgICAgbV9mcmFtZXNbMF0gPSBJbWFnZUZyYW1lRGF0YShpbWFnZSk7
CisgICAgCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0IGZp
Z3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNwZWN0
aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4MC4K
LSAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBOYXRpdmVJbWFnZTo6
c2l6ZShpbWFnZSk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXplID0g
bV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgpICog
NDsKLSAgICAKLSAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFzQWxw
aGEgPSBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1faGF2
ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShpbWFn
ZSk7CiB9CiAKIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQpAQCAtMTA1LDcgKzEwMyw3IEBA
IGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCiAg
ICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2ZyYW1l
c1tpbmRleF0uaGFzSW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xlU2Vj
dXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTI1LDkgKzEyMyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIC8vIFRoZSB1bmRl
cmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBqdXN0IHRyeWluZyB0
bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRhKSwg
c28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCi0gICAg
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0gICAg
ICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCi0gICAgICAgICAgICBmcmFtZUJ5dGVz
Q2xlYXJlZCArPSBmcmFtZUJ5dGVzOworICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBtX2Zy
YW1lc1tpXS5jbGVhcihDYWNoZU1ldGFkYXRhKTsKICAgICB9CiAKICAgICBtX3NvdXJjZS5jbGVh
cihkZXN0cm95QWxsLCBjbGVhckJlZm9yZUZyYW1lLCBkYXRhKCksIG1fYWxsRGF0YVJlY2VpdmVk
KTsKQEAgLTE1MCw4ICsxNDYsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVu
c2lnbmVkIGFsbEZyYW1lQnl0ZXMgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9m
cmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGFsbEZyYW1lQnl0ZXMgKz0gbV9mcmFtZXNbaV0u
dXNlZEZyYW1lQnl0ZXMoKTsKKyAgICBmb3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpCisgICAg
ICAgIGFsbEZyYW1lQnl0ZXMgKz0gZnJhbWUuZnJhbWVCeXRlcygpOwogCiAgICAgaWYgKGFsbEZy
YW1lQnl0ZXMgPiBsYXJnZUFuaW1hdGlvbkN1dG9mZikgewogICAgICAgICBMT0coSW1hZ2VzLCAi
Qml0bWFwSW1hZ2UgJXAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkgZGVzdHJveWluZ0Rh
dGE6IGFsbEZyYW1lQnl0ZXM9JXUgY3V0b2ZmPSV1IiwgdGhpcywgYWxsRnJhbWVCeXRlcywgbGFy
Z2VBbmltYXRpb25DdXRvZmYpOwpAQCAtMTg1LDI1ICsxODEsMTIgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdM
ZXZlbCwgSW0KICAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBt
X2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CiAKLSAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hl
TWV0YWRhdGFBbmRGcmFtZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSA9IG1f
c291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsK
LSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5n
TGV2ZWw7Ci0gICAgfQotCi0gICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3Nv
dXJjZS5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2hh
dmVNZXRhZGF0YSA9IHRydWU7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSA9IG1f
c291cmNlLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOwotCi0gICAgaWYgKHJlcGV0aXRp
b25Db3VudChmYWxzZSkgIT0gY0FuaW1hdGlvbk5vbmUpCi0gICAgICAgIG1fZnJhbWVzW2luZGV4
XS5tX2R1cmF0aW9uID0gbV9zb3VyY2UuZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOwotCi0g
ICAgbV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJ
bmRleChpbmRleCk7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcyA9IG1fc291cmNl
LmZyYW1lQnl0ZXNBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICBtX2ZyYW1l
c1tpbmRleF0gPSBtX3NvdXJjZS5jcmVhdGVGcmFtZURhdGFBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsLCBmcmFtZUNhY2hpbmcpOwogCi0gICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdl
ICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0ZSAlZCkiLCB0aGlzLCBpbmRl
eCwgZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFPbmx5ID8gIm1ldGFkYXRhIG9ubHksICIg
OiAiIiwgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcywgbV9mcmFtZXNbaW5kZXhdLm1faXND
b21wbGV0ZSk7CisgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1
ICglcyV1IGJ5dGVzLCBjb21wbGV0ZSAlZCkiLCB0aGlzLCBpbmRleCwgZnJhbWVDYWNoaW5nID09
IENhY2hlTWV0YWRhdGEgPyAibWV0YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0u
ZnJhbWVCeXRlcygpLCBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIGlmICht
X2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVD
YXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcyk7CisgICAgaWYgKG1fZnJhbWVz
W2luZGV4XS5oYXNJbWFnZSgpKSB7CisgICAgICAgIGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8
aW50PihtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRlcygpKTsKICAgICAgICAgbV9kZWNvZGVkU2l6
ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBUaGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxs
IHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGRhdGEgdXNlZAogICAgICAgICAvLyB0byBk
ZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KQEAgLTI4OCwyMSArMjcxLDE5IEBAIGJvb2wgQml0
bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIGZyYW1l
IGFmZmVjdGVkIGJ5IGFwcGVuZGluZyBuZXcgZGF0YSBoZXJlLiBUaHVzIHdlIGhhdmUgdG8gY2xl
YXIgYWxsIHRoZQogICAgIC8vIGluY29tcGxldGUgZnJhbWVzIHRvIGJlIHNhZmUuCiAgICAgdW5z
aWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9mcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMp
IHsKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2FsbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkg
aGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAgICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChp
LmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAgLy8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBh
c3MpIGZyYW1lcyEKLSAgICAgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1f
ZnJhbWVCeXRlczsKLSAgICAgICAgaWYgKG1fZnJhbWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFt
X2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCAr
PSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBmcmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlm
IChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFtZS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAg
ICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5jbGVhcihDYWNoZU5vbmUpOwogICAgIH0KICAg
ICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3Vy
Y2U6Ok5vKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBmb3Ig
aU9TPwogICAgIGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHko
KSkgewotICAgICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5t
X2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAxXS5j
bGVhcih0cnVlKSkgeworICAgICAgICBpZiAoaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMu
c2l6ZSgpIC0gMV0uY2xlYXIoQ2FjaGVOb25lKSkgewogICAgICAgICAgICAgZGVsdGFCeXRlcyAr
PSBieXRlczsKICAgICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gbV9kZWNvZGVkUHJvcGVydGllc1Np
emU7CiAgICAgICAgICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7CkBAIC0zNzIsOCAr
MzUzLDggQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5k
ZXgsIEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKQotICAgICAgICB8fCAoZnJhbWVDYWNo
aW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2Up
Ci0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYgIW1fZnJh
bWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkpCisgICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0g
Q2FjaGVNZXRhZGF0YUFuZEltYWdlICYmICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAg
ICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpbmRl
eF0uaGFzTWV0YWRhdGEoKSkpCiAgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDAsIGZyYW1lQ2Fj
aGluZyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM4OCwxMCArMzY5LDkgQEAgTmF0aXZlSW1h
Z2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQg
cHJlc2VudGF0aW9uU2MKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGgg
YSBoaWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAg
IC8vIHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFt
ZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwg
PCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwg
bV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBs
aW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vic2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAg
IC8vIElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNp
emUsIHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9
IC1tX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0u
Y2xlYXIodHJ1ZSk7CisgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5j
bGVhcihDYWNoZU5vbmUpOwogICAgICAgICBpbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCk7CiAgICAg
ICAgIG1fZGVjb2RlZFNpemUgKz0gc2l6ZUNoYW5nZTsKICAgICAgICAgaWYgKGltYWdlT2JzZXJ2
ZXIoKSkKQEAgLTM5OSwyNiArMzc5LDI2IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpm
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjCiAgICAg
fQogCiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBmZXRjaGVkIGEgZnJhbWUgeWV0LCBkbyBzby4KLSAg
ICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGVNZXRh
ZGF0YUFuZEZyYW1lKTsKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2Zy
YW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2Ft
cGxpbmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEltYWdlKTsKIAotICAgIHJldHVybiBtX2ZyYW1l
c1tpbmRleF0ubV9pbWFnZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmltYWdlKCk7CiB9
CiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9u
bHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9p
c0NvbXBsZXRlOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpOwogfQog
CiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQog
ewotICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkp
KQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YSkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9u
OworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uZHVyYXRpb24oKTsKIH0KIAogTmF0aXZlSW1h
Z2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKQEAgLTQyOCwx
MSArNDA4LDExIEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpCiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNp
emVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hl
TWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hl
TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRl
eF0ubV9oYXZlTWV0YWRhdGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9oYXNB
bHBoYTsKKyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJl
dHVybiBtX2ZyYW1lc1tpbmRleF0uaGFzQWxwaGEoKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5m
cmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CiB9CkBAIC00NDQsMTEgKzQyNCwxMSBAQCBib29s
IEJpdG1hcEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogCiBJbWFnZU9yaWVu
dGF0aW9uIEJpdG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgp
CiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25s
eSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhKSkK
ICAgICAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24oKTsKIAotICAgIGlmIChtX2ZyYW1lc1tp
bmRleF0ubV9oYXZlTWV0YWRhdGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9v
cmllbnRhdGlvbjsKKyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAg
ICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ub3JpZW50YXRpb24oKTsKIAogICAgIHJldHVybiBt
X3NvdXJjZS5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOwogfQpAQCAtNzAwLDcgKzY4MCw3IEBA
IENvbG9yIEJpdG1hcEltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKQogICAgICAgICByZXR1
cm4gQ29sb3IoKTsKICAgICAKICAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgpKTsKLSAgICBtX3Nv
bGlkQ29sb3IgPSBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKG1fZnJhbWVzWzBd
Lm1faW1hZ2UuZ2V0KCkpOworICAgIG1fc29saWRDb2xvciA9IG1fZnJhbWVzWzBdLnNpbmdsZVBp
eGVsU29saWRDb2xvcigpOwogICAgIAogICAgIEFTU0VSVChtX3NvbGlkQ29sb3IpOwogICAgIHJl
dHVybiBtX3NvbGlkQ29sb3IudmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDA3NTg5MjljZDg3ZmFkYWNmMDJiNmVkOGVlYWZl
N2RlZmQ2NmYwYzUuLmMwNDBlNDBhODlkYWI0ODEwMTFhMWRhMTJjNWM3NDljYzQyNDE2OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAt
MjgsOCArMjgsOSBAQAogI2lmbmRlZiBCaXRtYXBJbWFnZV9oCiAjZGVmaW5lIEJpdG1hcEltYWdl
X2gKIAotI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJ
bWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmll
bnRhdGlvbi5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgpAQCAtNDYsNjQgKzQ3LDE2IEBAIE9CSkNfQ0xBU1MgTlNJbWFnZTsKIHR5cGVkZWYgc3RydWN0
IEhCSVRNQVBfXyAqSEJJVE1BUDsKICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
c3RydWN0IEZyYW1lRGF0YTsKLX0KLQogbmFtZXNwYWNlIFdURiB7Ci0gICAgdGVtcGxhdGU8PiBz
dHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkZyYW1lRGF0YT4gOiBwdWJsaWMgU2ltcGxlQ2xh
c3NWZWN0b3JUcmFpdHMgewotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Jbml0aWFsaXpl
V2l0aE1lbXNldCA9IGZhbHNlOyAvLyBOb3QgYWxsIEZyYW1lRGF0YSBtZW1iZXJzIGluaXRpYWxp
emUgdG8gMC4KLSAgICB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6
OkltYWdlRnJhbWVEYXRhPiA6IHB1YmxpYyBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSBmYWxzZTsgLy8gTm90
IGFsbCBJbWFnZUZyYW1lRGF0YSBtZW1iZXJzIGluaXRpYWxpemUgdG8gMC4KK307CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGltZXI7CiAKLW5hbWVzcGFjZSBOYXRpdmVJbWFn
ZSB7Ci0gICAgSW50U2l6ZSBzaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci0gICAgYm9vbCBo
YXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotICAgIENvbG9yIHNpbmdsZVBpeGVsU29s
aWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotfQotCi0vLyA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEZyYW1lRGF0YSBDbGFzcwotLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLXN0cnVj
dCBGcmFtZURhdGEgewotcHVibGljOgotICAgIEZyYW1lRGF0YSgpCi0gICAgICAgIDogbV9oYXZl
TWV0YWRhdGEoZmFsc2UpCi0gICAgICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQotICAgICAgICAs
IG1faGFzQWxwaGEodHJ1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZyYW1lRGF0YSgpCi0gICAg
eyAKLSAgICAgICAgY2xlYXIodHJ1ZSk7Ci0gICAgfQotCi0gICAgLy8gQ2xlYXIgdGhlIGNhY2hl
ZCBpbWFnZSBkYXRhIG9uIHRoZSBmcmFtZSwgYW5kIChvcHRpb25hbGx5KSB0aGUgbWV0YWRhdGEu
Ci0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBj
bGVhci4KLSAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7Ci0gICAgCi0gICAgdW5z
aWduZWQgdXNlZEZyYW1lQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlID8gbV9mcmFtZUJ5
dGVzIDogMDsgfQotCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKLSAgICBJbWFnZU9yaWVu
dGF0aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbiB9OwotICAgIFN1
YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVsIHsgMCB9OwotICAgIGZsb2F0IG1fZHVy
YXRpb24geyAwIH07Ci0gICAgYm9vbCBtX2hhdmVNZXRhZGF0YSA6IDE7Ci0gICAgYm9vbCBtX2lz
Q29tcGxldGUgOiAxOwotICAgIGJvb2wgbV9oYXNBbHBoYSA6IDE7Ci0gICAgdW5zaWduZWQgbV9m
cmFtZUJ5dGVzIHsgMCB9OwotfTsKLQotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLy8gQml0bWFwSW1hZ2UgQ2xhc3MKLS8vID09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQogY2xhc3MgQml0bWFwSW1h
Z2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogICAgIGZyaWVuZCBjbGFzcyBHZW5lcmF0ZWRJbWFn
ZTsKICAgICBmcmllbmQgY2xhc3MgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U7CkBAIC0yMjUsMTEg
KzE3OCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0
aW9uQXRJbmRleChzaXplX3QpOwogCiAgICAgLy8gRGVjb2RlcyBhbmQgY2FjaGVzIGEgZnJhbWUu
IE5ldmVyIGFjY2Vzc2VkIGV4Y2VwdCBpbnRlcm5hbGx5LgotICAgIGVudW0gSW1hZ2VGcmFtZUNh
Y2hpbmcgeyBDYWNoZU1ldGFkYXRhT25seSwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lIH07Ci0gICAg
dm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFt
ZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIHZvaWQgY2FjaGVGcmFtZShz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVN
ZXRhZGF0YUFuZEltYWdlKTsKIAogICAgIC8vIENhbGxlZCBiZWZvcmUgYWNjZXNzaW5nIG1fZnJh
bWVzW2luZGV4XSBmb3IgaW5mbyB3aXRob3V0IGRlY29kaW5nLiBSZXR1cm5zIGZhbHNlIG9uIGlu
ZGV4IG91dCBvZiBib3VuZHMuCi0gICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBp
bmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIGJv
b2wgZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVDYWNoaW5nID0g
Q2FjaGVNZXRhZGF0YUFuZEltYWdlKTsKIAogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRlIGNh
Y2hlZCBkYXRhLiBXaGVuIHxkZXN0cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAgIC8v
IHRoZSBlbnRpcmUgZnJhbWUgYnVmZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3VyY2Ug
dG8gZGVzdHJveQpAQCAtMjkyLDcgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBJbnRT
aXplIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbjsKIAogICAgIHNpemVfdCBtX2N1cnJlbnRG
cmFtZSB7IDAgfTsgLy8gVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGZyYW1lIG9mIGFuaW1hdGlv
bi4KLSAgICBWZWN0b3I8RnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8gQW4gYXJyYXkgb2YgdGhl
IGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0byByZWYgZnJhbWVzIHRv
IHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KKyAgICBWZWN0b3I8SW1hZ2VGcmFtZURhdGEsIDE+IG1f
ZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9u
LiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2ZyYW1lVGltZXI7CiAgICAgaW50IG1fcmVwZXRpdGlv
bkNvdW50IHsgY0FuaW1hdGlvbk5vbmUgfTsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxv
b3BzIHdlIHNob3VsZCBkby4gVGhpcyB3aWxsIGJlIGNBbmltYXRpb25Ob25lIGlmIHRoaXMgaW1h
Z2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YmQw
MzJjMWFmMzgxZDY5YTIxNmVhYjQzMzRjOWYxMWYwYTNlODYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKKworI2lm
IFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2Vsc2UKKyNpbmNsdWRlICJJ
bWFnZURlY29kZXIuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitJbWFn
ZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1h
Z2VGcmFtZURhdGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQorICAgIDogbV9zdGF0dXMo
RnJhbWVDb21wbGV0ZSkKKyAgICAsIG1fc2l6ZShOYXRpdmVJbWFnZTo6c2l6ZShpbWFnZSkpCisg
ICAgLCBtX2ltYWdlKGltYWdlKQorICAgICwgbV9oYXNBbHBoYShOYXRpdmVJbWFnZTo6aGFzQWxw
aGEoaW1hZ2UpKQoreworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEoSW1hZ2VE
ZWNvZGVyJiBkZWNvZGVyLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQoreworICAgIEFTU0VSVChm
cmFtZUNhY2hpbmcgJiBDYWNoZU1ldGFkYXRhKTsKKyAgICAKKyAgICBpZiAoZnJhbWVDYWNoaW5n
ICYgQ2FjaGVJbWFnZSkgeworICAgICAgICBtX2ltYWdlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgICAgIG1fc3Vic2FtcGxp
bmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7CisgICAgfQorICAgIAorICAgIGlmIChmcmFtZUNh
Y2hpbmcgJiBDYWNoZU1ldGFkYXRhKSB7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVy
Lm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5m
cmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSA/IEZyYW1lQ29tcGxldGUgOiBGcmFtZVBhcnRp
YWw7CisgICAgICAgIAorICAgICAgICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBj
QW5pbWF0aW9uTm9uZSkKKyAgICAgICAgICAgIG1fZHVyYXRpb24gPSBkZWNvZGVyLmZyYW1lRHVy
YXRpb25BdEluZGV4KGluZGV4KTsKKyAgICAgICAgCisgICAgICAgIG1faGFzQWxwaGEgPSBkZWNv
ZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICAgICAgbV9zaXplID0gZGVjb2Rl
ci5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICB9Cit9CisK
K0ltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEoKQoreworICAgIE5hdGl2ZUltYWdlOjpj
bGVhcihtX2ltYWdlKTsKK30KKwordW5zaWduZWQgSW1hZ2VGcmFtZURhdGE6OmNsZWFyKEltYWdl
RnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAgICBBU1NFUlQoIShmcmFtZUNhY2hpbmcg
JiBDYWNoZUltYWdlKSk7CisKKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gdGhpcy0+ZnJhbWVC
eXRlcygpOworICAgIAorICAgIE5hdGl2ZUltYWdlOjpjbGVhcihtX2ltYWdlKTsKKyAgICAKKyAg
ICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTm9uZSkKKyAgICAgICAgKnRoaXMgPSBJbWFnZUZy
YW1lRGF0YSgpOworICAgIGVsc2UKKyAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7CisgICAgCisg
ICAgcmV0dXJuIGZyYW1lQnl0ZXM7Cit9CisKK0NvbG9yIEltYWdlRnJhbWVEYXRhOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmICghaGFzSW1hZ2UoKSB8fCBtX3NpemUg
IT0gSW50U2l6ZSgxLCAxKSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgCisgICAgcmV0
dXJuIE5hdGl2ZUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IobV9pbWFnZSk7Cit9CisgICAg
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURh
dGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMTJhZTk0YTVkYzRhZTU3M2JjN2Q5MjQ2ODU1OWEwNGZkOGU1MjU0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZURhdGEuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlRnJhbWVEYXRhX2gKKyNkZWZpbmUg
SW1hZ2VGcmFtZURhdGFfaAorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbWFnZU9y
aWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdl
UHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKy8vIFN1YnNhbXBsaW5nTGV2ZWwu
IDAgaXMgbm8gc3Vic2FtcGxpbmcsIDEgaXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBl
dGMuCit0eXBlZGVmIHNob3J0IFN1YnNhbXBsaW5nTGV2ZWw7CisKK2NvbnN0IFN1YnNhbXBsaW5n
TGV2ZWwgTWluU3Vic2FtcGxpbmdMZXZlbCA9IDA7Citjb25zdCBTdWJzYW1wbGluZ0xldmVsIE1h
eFN1YnNhbXBsaW5nTGV2ZWwgPSAzOworY29uc3QgU3Vic2FtcGxpbmdMZXZlbCBEZWZhdWx0U3Vi
c2FtcGxpbmdMZXZlbCA9IE1pblN1YnNhbXBsaW5nTGV2ZWw7CisKK2VudW0gSW1hZ2VGcmFtZUNh
Y2hpbmcgeworICAgIENhY2hlTm9uZSwKKyAgICBDYWNoZU1ldGFkYXRhLAorICAgIENhY2hlSW1h
Z2UsCisgICAgQ2FjaGVNZXRhZGF0YUFuZEltYWdlCit9OworCitlbnVtIEltYWdlRnJhbWVTdGF0
dXMgeworICAgIEZyYW1lRW1wdHksCisgICAgRnJhbWVQYXJ0aWFsLAorICAgIEZyYW1lQ29tcGxl
dGUKK307CisgICAgCituYW1lc3BhY2UgTmF0aXZlSW1hZ2UgeworSW50U2l6ZSBzaXplKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJik7Citib29sIGhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7
CitDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKK3Zv
aWQgY2xlYXIoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKK30KKworY2xhc3MgSW1hZ2VEZWNvZGVy
OworCitjbGFzcyBJbWFnZUZyYW1lRGF0YSB7CitwdWJsaWM6CisgICAgSW1hZ2VGcmFtZURhdGEo
KTsKKyAgICBJbWFnZUZyYW1lRGF0YShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOworICAgIEltYWdl
RnJhbWVEYXRhKEltYWdlRGVjb2RlciYsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCA9
IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRh
dGFBbmRJbWFnZSk7CisgICAgCisgICAgfkltYWdlRnJhbWVEYXRhKCk7CisgICAgCisgICAgdW5z
aWduZWQgY2xlYXIoSW1hZ2VGcmFtZUNhY2hpbmcpOworICAgIENvbG9yIHNpbmdsZVBpeGVsU29s
aWRDb2xvcigpIGNvbnN0OworICAgIAorICAgIEltYWdlRnJhbWVTdGF0dXMgc3RhdHVzKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKyAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXR1cyA9PSBGcmFtZUNvbXBsZXRlOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdW5zaWduZWQgZnJhbWVCeXRlcygpIGNvbnN0IHsg
cmV0dXJuIGhhc0ltYWdlKCkgPyBtX3NpemUuYXJlYSgpICogNCA6IDA7IH0KKyAgICBOYXRpdmVJ
bWFnZVB0ciBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICAKKyAgICBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsg
fQorICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3Vic2FtcGxpbmdMZXZlbDsgfQorICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9kdXJhdGlvbjsgfQorICAgIAorICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX2hhc0FscGhhOyB9CisgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2U7IH0KKyAgICBib29sIGhhc01ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZS5pc0Vt
cHR5KCk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgSW1hZ2VGcmFtZVN0YXR1cyBtX3N0YXR1cyB7
IEZyYW1lRW1wdHkgfTsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBOYXRpdmVJbWFnZVB0ciBt
X2ltYWdlOworICAgIAorICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1
bHRJbWFnZU9yaWVudGF0aW9uIH07CisgICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5n
TGV2ZWwgeyAwIH07CisgICAgZmxvYXQgbV9kdXJhdGlvbiB7IDAgfTsKKyAgICBib29sIG1faGFz
QWxwaGEgeyB0cnVlIH07Cit9OworICAgIAorfQorCisjZW5kaWYgLy8gSW1hZ2VGcmFtZURhdGFf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
CmluZGV4IGRkZDhhNTViYTA5MDZjNTg2NmExOTJjZjhlNDE0ZWE3MDdiNzI4YWMuLjQzYjBmODcy
ZTBjNjA2YjcyNTIzYjEwMTA4NjRlNTdkYmNkYzkxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTIyNCw2ICsyMjQsMTEgQEAg
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpbmdMZXYKICAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVj
b2Rlci0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDog
bnVsbHB0cjsKIH0KIAorSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lRGF0
YUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWws
IEltYWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6
ZWQoKSA/IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
LCBmcmFtZUNhY2hpbmcpIDogSW1hZ2VGcmFtZURhdGEoKTsKK30KKyAgICAKIHZvaWQgSW1hZ2VT
b3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgaWYgKG1fYWxsb3dTdWJz
YW1wbGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCmluZGV4IDYwMzU3MzliN2U4YjA5NmRjOGRmZTljNTMwYTQyYzZmMjkxYmRhMDAuLmJjYjhk
MjY5NTBmMzM4YjVkNWJkNjI5NmNjZTcyMTUyYTY2OWJjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMjcsNiArMjcsNyBAQAogI2lm
bmRlZiBJbWFnZVNvdXJjZV9oCiAjZGVmaW5lIEltYWdlU291cmNlX2gKIAorI2luY2x1ZGUgIklt
YWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUg
IkludFBvaW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKQEAgLTYzLDkgKzY0LDYg
QEAgY29uc3QgaW50IGNBbmltYXRpb25Mb29wT25jZSA9IDA7CiBjb25zdCBpbnQgY0FuaW1hdGlv
bkxvb3BJbmZpbml0ZSA9IC0xOwogY29uc3QgaW50IGNBbmltYXRpb25Ob25lID0gLTI7CiAKLS8v
IFN1YnNhbXBsaW5nTGV2ZWwuIDAgaXMgbm8gc3Vic2FtcGxpbmcsIDEgaXMgaGFsZiBkaW1lbnNp
b25zIG9uIGVhY2ggYXhpcyBldGMuCi10eXBlZGVmIHNob3J0IFN1YnNhbXBsaW5nTGV2ZWw7Ci0K
IGNsYXNzIEltYWdlU291cmNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZVNvdXJj
ZSk7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpAQCAtMTMyLDE4ICsxMzAsMTkgQEAg
cHVibGljOgogICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4KHNpemVfdCkg
Y29uc3Q7CiAgICAgCiAgICAgLy8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZnJhbWUu
Ci0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50
YXRpb24pIGNvbnN0OworICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdEltYWdlT3JpZW50
YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3Q7CiAgICAgCiAg
ICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQgZnJhbWUuIElm
IHRoZSBmcmFtZSBpcyBub3QgeWV0CiAgICAgLy8gZGVjb2RlZCB0aGVuIHJldHVybiAwLgotICAg
IHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDAp
IGNvbnN0OworICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsKICAgICAKICAgICBmbG9h
dCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24K
ICAgICAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVyIGNhbGxpbmcg
Y2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50cyBvbiBjbGVh
cigpIGFib3ZlLgotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1w
bGluZ0xldmVsKTsKKyAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZURhdGFBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZy
YW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRJbWFnZSk7CiAgICAgCiBwcml2YXRlOgogICAg
IHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CmluZGV4IDE3NzIyYmVjNTNhYjhhMDhhOGRhODUyOGI5ZTBkN2M0ZDBjZDQxMzUuLmNlODFiMTRm
MGE1ZjIxNmQ2MmJiYzE2NTRhNDljZjg1YTY0ZGEwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CkBAIC00MiwxOSArNDIsMTcgQEAgbmFtZXNwYWNlIE5hdGl2ZUltYWdlIHsKIAogSW50U2l6ZSBz
aXplKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiBpbWFnZSkKIHsKLSAgICByZXR1cm4g
Y2Fpcm9TdXJmYWNlU2l6ZShpbWFnZS5nZXQoKSk7CisgICAgcmV0dXJuIGltYWdlID8gY2Fpcm9T
dXJmYWNlU2l6ZShpbWFnZS5nZXQoKSkgOiBJbnRTaXplKCk7CiB9CiAKIGJvb2wgaGFzQWxwaGEo
Y29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQogewotICAgIHJldHVybiBjYWly
b19zdXJmYWNlX2dldF9jb250ZW50KGltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9S
OworICAgIHJldHVybiBpbWFnZSA/IGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0
KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1IgOiB0cnVlOwogfQogCiBDb2xvciBzaW5nbGVQaXhl
bFNvbGlkQ29sb3IoY29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQogewotICAg
IEFTU0VSVChpbWFnZSk7Ci0gICAgCi0gICAgaWYgKE5hdGl2ZUltYWdlOjpzaXplKGltYWdlKSAh
PSBJbnRTaXplKDEsIDEpKQorICAgIGlmICghaW1hZ2UgfHwgTmF0aXZlSW1hZ2U6OnNpemUoaW1h
Z2UpICE9IEludFNpemUoMSwgMSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAgaWYg
KGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQ
RV9JTUFHRSkKQEAgLTY0LDYgKzYyLDEwIEBAIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihj
b25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCiAgICAgcmV0dXJuIGNvbG9yRnJv
bVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7CiB9CiAKK3ZvaWQgY2xlYXIoY29uc3QgUmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4mKQoreworfQorCiB9CiAKIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLApAQCAtMTI1LDE4ICsxMjcsNiBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXco
dGhpcyk7CiB9CiAKLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17
Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7
Ci0KLSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRleCAwM2M4
MWExNzBiZTc5YWU2YmU2Y2FjZGM5OWY0YzM5OGNhYWY0MjZkLi42NzY3ZGViYzE2OWFhZmFlYmRk
Yjg5NGY2NDU4ZjZkNzRkZWEzNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtNTQsOCArNTQsNyBAQCBuYW1l
c3BhY2UgTmF0aXZlSW1hZ2UgewogCiBJbnRTaXplIHNpemUoY29uc3QgUmV0YWluUHRyPENHSW1h
Z2VSZWY+JiBpbWFnZSkKIHsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIHJldHVybiBJbnRTaXpl
KENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0
KCkpKTsKKyAgICByZXR1cm4gaW1hZ2UgPyBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5n
ZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSA6IEludFNpemUoKTsKIH0KIAog
Ym9vbCBoYXNBbHBoYShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mKQpAQCAtNjYsOSArNjUs
NyBAQCBib29sIGhhc0FscGhhKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYpCiAgICAgCiBD
b2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBp
bWFnZSkKIHsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAotICAgIGlmIChOYXRpdmVJbWFnZTo6
c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKKyAgICBpZiAoIWltYWdlIHx8IE5hdGl2ZUlt
YWdlOjpzaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEpKQogICAgICAgICByZXR1cm4gQ29sb3Io
KTsKICAgICAKICAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCkBAIC04NywyMyAr
ODQsMTYgQEAgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IFJldGFpblB0cjxDR0lt
YWdlUmVmPiYgaW1hZ2UpCiAgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxb
M10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10s
IHBpeGVsWzNdKTsKIH0KIAotfQotCi1ib29sIEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1l
dGFkYXRhKQordm9pZCBjbGVhcihjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQog
ewotICAgIGlmIChjbGVhck1ldGFkYXRhKQotICAgICAgICBtX2hhdmVNZXRhZGF0YSA9IGZhbHNl
OwotCi0gICAgbV9zdWJzYW1wbGluZ0xldmVsID0gMDsKLQotICAgIGlmIChtX2ltYWdlKSB7CiAj
aWYgQ0FDSEVfU1VCSU1BR0VTCi0gICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKG1f
aW1hZ2UuZ2V0KCkpOworICAgIGlmIChpbWFnZSkKKyAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNs
ZWFySW1hZ2UoaW1hZ2UuZ2V0KCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaW1hZ2UpOwog
I2VuZGlmCi0gICAgICAgIG1faW1hZ2UgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworfQorCiB9CiAKIENHSW1hZ2VSZWYgQml0bWFwSW1h
Z2U6OmdldENHSW1hZ2VSZWYoKQpAQCAtMTkyLDExICsxODIsMTEgQEAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgpCiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tp
bmRleF0ubV9pbWFnZSkKKyAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2Zy
YW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKICAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCk7CiAK
LSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJl
dHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKKyAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5z
dWJzYW1wbGluZ0xldmVsKCkpCisgICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaW1hZ2Uo
KTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281796</attachid>
            <date>2016-06-21 17:28:24 -0700</date>
            <delta_ts>2016-07-04 16:48:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160621172817.patch</filename>
            <type>text/plain</type>
            <size>97326</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRjYWFiYTc1N2U5MjJl
NDlkMzNiNzYwZWVjZmY2NDFmNTMyODVlZC4uMDBkN2E1MzM1OGI2MmY5ZDFjMTgxNDJjN2U0ZTRi
M2U3YWI1OTVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MCBAQAorMjAxNi0wNi0yMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIFJlbmFt
ZSBGcmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IEltYWdlRnJhbWVEYXRhIHRvIGEgc2VwYXJhdGUgZmlsZSBzbyBpdCBjYW4gYmUgY2FjaGVkIGJ5
IEltYWdlU291cmNlCisgICAgICAgIGFuZCB3aWxsIHN0aWxsIGJlIGNvbnN1bWVkIGJ5IEJpdG1h
cEltYWdlLiBNYWtlIHRoZSBkYXRhIG1lbWJlcnMgb2YgSW1hZ2VGcmFtZURhdGEKKyAgICAgICAg
YmUgcHJpdmF0ZSBhbmQgYWRkIGdldHRlcnMgdG8gcmV0dXJuIHRoZWlyIHZhbHVlcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdl
LgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpoYXZlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6ZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjplbnN1cmVGcmFt
ZUlzQ2FjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVEdXJhdGlvbkF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppc0FsbW9zdFNvbGlkQ29sb3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZURhdGE6OkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpG
cmFtZURhdGE6On5GcmFtZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVE
YXRhOjp1c2VkRnJhbWVCeXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0
ZUZyYW1lRGF0YUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW1hZ2VGcmFtZURhdGEuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6fkltYWdlRnJhbWVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhclN1YkltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lRGF0YTo6aXNBbG1vc3RTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9pbWFnZUZyYW1lRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWVEYXRhOjpzdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omlz
Q29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmZyYW1lQnl0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpvcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
c3Vic2FtcGxpbmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZHVy
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0FscGhhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lRGF0YTo6aGFzTWV0YWRhdGEpOgorCisyMDE2LTA2LTIxICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgSW50cm9kdWNl
IFBsYXRmb3JtSW1hZ2UgYW5kIG1ha2UgaXQgaXMgYSB3cmFwcGVyIGZvciBOYXRpdmVJbWFnZVB0
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4Njg0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG1h
aW4gcHVycG9zZSBvZiB0aGlzIHJlZmFjdG9yaW5nIGlzIHRvIG1vdmUgdGhlIHBsYXRmb3JtIGlt
YWdlIGRlcGVuZGVudAorICAgICAgICBjb2RlIGZyb20gQml0bWFwSW1hZ2UgdG8gUGxhdGZvcm1J
bWFnZS4gUGxhdGZvcm1JbWFnZSBpcyByZXNwb25zaWJsZSBvZiAKKyAgICAgICAgZHJhd2luZyB0
aGUgaW1hZ2UgYW5kIGFuc3dlcmluZyBOYXRpdmVJbWFnZVB0ciBxdWVzdGlvbnMgd2hlbiBhbiBJ
bWFnZURlY29kZXIKKyAgICAgICAgaXMgbm90IGF2YWlsYWJsZS4gQXBhcnQgZnJvbSBkcmF3aW5n
IHRoZSBpbWFnZSwgdGhlIHF1ZXJ5IGZ1bmN0aW9ucyB3aWxsIGJlCisgICAgICAgIGNhbGxlZCBv
bmx5IHdoZW4gY29uc3RydWN0aW5nIGEgRnJhbWVEYXRhIHNvIHdlIHdpbGwga2VlcCBldmVyeXRo
aW5nIGFzIGEKKyAgICAgICAgTmF0aXZlSW1hZ2VQdHIuIEJ1dCB3ZSB3aWxsIGNhc3QgdGhlIE5h
dGl2ZUltYWdlUHRyIHRvIFBsYXRmb3JtSW1hZ2Ugd2hlbgorICAgICAgICBhIHBsYXRmb3JtIGRl
cGVuZGVudCBmdW5jdGlvbiBpcyBuZWVkZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0tIENv
ZGUgcmVmYWN0b3JpbmcsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFBsYXRmb3Jt
QXBwbGVXaW4uY21ha2U6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAg
ICogUGxhdGZvcm1XaW5DYWlyby5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAg
ICgtW0RPTU5vZGUgZ2V0UHJldmlld1NuYXBzaG90SW1hZ2U6YW5kUmVjdHM6XSk6CisgICAgICAg
ICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbToKKyAgICAgICAgKC1bV2ViVGV4dElu
ZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0SW5kaWNhdG9yOm1hcmdpbjpvZmZzZXQ6XSk6
CisgICAgICAgIChjcmVhdGVDb250ZW50Q3Jvc3NmYWRlQW5pbWF0aW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRl
c3Ryb3lEZWNvZGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJv
eURlY29kZWREYXRhSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFtZUltYWdl
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToK
KyAgICAgICAgbV9oYXNBbHBoYSBjYW4gYmUgaW5pdGlhbGl6ZWQgd2l0aCBmYWxzZSBiZWNhdXNl
IGl0IGlzIGFjY2Vzc2VkIG9ubHkgaW4KKyAgICAgICAgQml0bWFwSW1hZ2U6OmZyYW1lSGFzQWxw
aGFBdEluZGV4KCkgYW5kIGl0IGlzIGd1YXJkZWQgYnkgbV9oYXZlTWV0YWRhdGEuCisgICAgICAg
IEJvdGggbV9oYXZlTWV0YWRhdGEgYW5kIG1faGFzQWxwaGEgYXJlIHNldCBpbiBCaXRtYXBJbWFn
ZSBjb25zdHJ1Y3RvcgorICAgICAgICBhbmQgaW4gQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoKS4K
KworICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lRGF0YTo6Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldENH
SW1hZ2VSZWYpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldEZpcnN0Q0dJ
bWFnZVJlZk9mU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Z2V0Q0dJ
bWFnZUFycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUltYWdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6UGxhdGZv
cm1JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjppc05pbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpjZ0ltYWdlUmVmKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnVwZGF0ZURpc3BsYXlNb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9QbGF0Zm9ybUltYWdlQ2Fpcm8uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpjbGVhclN1YkltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OnNp
bmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpp
c0FsbW9zdFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c3Vi
c2FtcGxpbmdTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpkcmF3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1hZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtSW1hZ2U6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFn
ZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2luZ2xlUGl4
ZWxTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0
U29saWRDb2xvcik6IE1vdmVkIGZyb20gUGx1Z2luVmlldy5jcHAgc2luY2UgUGxhdGZvcm1JbWFn
ZSBpcyB3aGF0IHRoaXMgZnVuY3Rpb24gYmVsb25ncyB0by4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUpOiBSZXR1cm5zIHRoZSBzdWItc2FtcGxpbmcg
c2NhbGUgYmFzZWQgb24gdGhlIGNvbnRleHQgc2NhbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW06CisgICAgICAgIChUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkNvY29hOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRUSUZGUmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVv
U291cmNlTWFjOjp1cGRhdGVQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJv
bUltYWdlKToKKwogMjAxNi0wNi0yMSAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+
CiAKICAgICAgICAgSW1wbGVtZW50IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpsYXlvdXRCbG9jawpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IDUxOGViNjljMThiODU2OGFiZmJjYTlmYTBmYzkxMmI5MDk5Nzg4
MjYuLjRkNmFiOWI0NzEzNjg4ZTY0ZDEwMGZlNTY2MzQ4ZmVjZWZjNDhiYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNi0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdl
IGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJDYWNoZS5tbToK
KyAgICAgICAgKCtbV2ViQ2FjaGUgaW1hZ2VGb3JVUkw6XSk6CisKIDIwMTYtMDYtMjEgIEFtaXIg
QWxhdmkgIDxhYWxhdmlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIFdLSFRUUENvb2tp
ZXNGb3JVUkwgZnJvbSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgdG8gT3BlblNvdXJjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDhjYmFiZDI4MzAwMGQzMDBjOWJjNzQ2MWRiODJkOWUzYzNhZDRiOWYuLmQ3Y2E0MzM3
MGE1ZDBmZWQzNWQ3YjBjMjk4Y2M4ZGZiMjAzN2Q2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NSBAQAorMjAxNi0wNi0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUs
Y29tPgorCisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEg
d3JhcHBlciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cu
Y3BwOgorICAgICAgICAoV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJMKToKKyAgICAg
ICAgKFdLSWNvbkRhdGFiYXNlVHJ5Q29weUNHSW1hZ2VBcnJheUZvclVSTCk6CisgICAgICAgIEl0
IHdhcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY29kZSB3aGljaCB1c2VzIEJpdG1hcEltYWdlOjpn
ZXRDR0ltYWdlQXJyYXkoKS4KKyAgICAgICAgQ2FsbCBCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZl
SW1hZ2VzKCkgaW5zdGVhZCBhbmQgZm9ybSB0aGUgcmV0dXJuZWQKKyAgICAgICAgVmVjdG9yPE5h
dGl2ZUltYWdlUHRyPiBidWlsZCB0aGUgQ0ZBcnJheVJlZi4KKyAgICAgICAgCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJldmlld0l0ZW1Db250cm9sbGVy
Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmVkKToKKyAgICAg
ICAgCisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xvcik6IERlbGV0ZWQuCisgICAg
ICAgIE1vdmUgdGhlIHN0YXRpYyBmdW5jdGlvbiBpc0FsbW9zdFNvbGlkQ29sb3IgdG8gUGxhdGZv
cm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisKIDIwMTYtMDYtMjEgIEFtaXIgQWxhdmkg
IDxhYWxhdmlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIFdLSFRUUENvb2tpZXNGb3JV
UkwgZnJvbSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UgdG8gT3BlblNvdXJjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggNWZmOTkxZmY3ZGEzMDhiYjkxODJlY2UzYmYxMjE3
MzBhNTQ4ZDI4Ny4uYmFlMzFlYWY4NmU3ZmNhOTA1ODI1MDkyYWEzOGE3OGMxMWU0MjIwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC01NSw3ICs1NSw2IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJU
aWxlZEJhY2tpbmdMYXllcldpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tD
QUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRt
YXBJbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0Zsb2F0UmVjdENHLmNwcApAQCAtNzUsNiArNzQsNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1J
bWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAzMjlhMTYwNzkxODk4NjEwM2M2MGUw
YjYwZDQwY2VlMGVmNmJjNjgxLi5jZGZkOWFhYmMwY2VkYTVlMzFmYzc3Yzg1MjI0ZmU0ODdkODRi
OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTIyLDcgKzEyMiw2IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlz
cGxheS5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tl
bmRDYWlyb0ltcGwuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKQEAgLTEzNCw2ICsxMzMsNyBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJv
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybVBhdGhDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCA3NGU1MTk1YWIwOTQ5NzMyMGZkOWI2YjRlZjk2YjZmZjRlM2IyNDYyLi40OTBi
ZTQxMWJjNWIyMzJjMmMwMTgzZWJiYzIxNjg4NTE3ODM1YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtOTgsNyArOTgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMTEyLDYgKzExMSw3IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BsYXRmb3JtUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1JlZlB0ckNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5z
Zm9ybWF0aW9uTWF0cml4Q2Fpcm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNi
ZjgwZjVkYTdmZWQ5MzU5NDhkZmRlYzc5MTI3Y2U2NTFkZTQ2ZTMuLjg2YjZiMzRhM2Y2NDhlN2Mw
ZTE1YmVjOTVmY2RhMDMwN2ExZGEyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0z
OTUsNyArMzk1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbQogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcApAQCAtNDE1LDYgKzQxNCw3
IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
U3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybVdpbkNhaXJvLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFr
ZQppbmRleCAyYzU1M2IwNTUxZGFkNjlhYTE5OWQ5NjBmNTUyMzQzZDkyMGYwN2IzLi5jMjAzMDkx
YTkzOWM2ZjdhMjJjZmJmODlmODJiMGMzMWVkOTJiYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
V2luQ2Fpcm8uY21ha2UKQEAgLTIxLDcgKzIxLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0JpdG1hcEltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9V
dGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8u
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMzQsNiAr
MzMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXRoQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVy
bkNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENh
aXJvLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybVBhdGhDYWlyby5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkYWY0NDc3
NjEwOTQzMDQ5OWFhMzkyOTUwNjhhZGRlNDA4ZTFiODguLjhiY2IxNDUzZjM0Zjg1MGFhMGE3NjVh
MjMwZDFiYWVjMTQxM2E4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MzYsNyArMTQzNiw3IEBACiAJCTM3NUNEMjMyMTE5
RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0
aW9uLmggKi87IH07CiAJCTM3NkRDQ0UxMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NkRDQ0UwMTNC
NEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVCNDAw
QUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92
ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFn
ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLzsgfTsKKwkJMzc3
QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzdBM0E4RjE1RUZDRTlBMDA1OUY1
QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLzsgfTsKIAkJMzc5MTlDMjMwQjdEMTg4NjAwQTU2
OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRl
cmF0b3IuY3BwICovOyB9OwogCQkzNzkxOUMyNDBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25J
dGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzc5MTlDMjIwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQkzNzkyOTE3QTE5ODVFRjM5MDBGNEI2NjEg
LyogQ3JlZGVudGlhbEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjgzLDYg
KzIyODMsOSBAQAogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgw
ODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyog
SW1hZ2VEZWNvZGVyQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAq
LzsgfTsKIAkJNTU1Qjg3RUQxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFG
MEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAqLzsgfTsKKwkJNTU3NEYwODcxRDAyNzkw
OTAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUlt
YWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NTVCMDg5ODQxRDE5RDBDRDAwNDMwNjdEIC8qIGltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QjA4OTgyMUQxOUQwQ0QwMDQz
MDY3RCAvKiBpbWFnZUZyYW1lRGF0YS5jcHAgKi87IH07CisJCTU1QjA4OTg1MUQxOUQwQ0QwMDQz
MDY3RCAvKiBpbWFnZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTVCMDg5ODMxRDE5RDBDRDAwNDMwNjdEIC8qIGltYWdlRnJhbWVEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcy
QTdGMjExQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkg
LyogU2ltdWxhdGVkQ2xpY2suaCAqLzsgfTsKIAkJNTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8q
IFNpbXVsYXRlZENsaWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MkE3RjIyMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAg
Ki87IH07CiAJCTU4MDM3MTYxMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBB
MDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwICovOyB9OwpAQCAtODk1OSw3ICs4OTYyLDcgQEAKIAkJ
Mzc2RENDRTAxM0I0Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM3NzJCMDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNlcnZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkg
LyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRtYXBJbWFnZUNHLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIFBs
YXRmb3JtSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
bGF0Zm9ybUltYWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMy
MTBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkl0ZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTI5MTc4MTk4NUVGMzkwMEY0
QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcmVkZW50aWFsQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg5NCw2
ICs5ODk3LDkgQEAKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVh
bGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNH
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNH
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5
NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlRGVjb2RlckNHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1
MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRm
b3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVCMDg5ODIxRDE5RDBD
RDAwNDMwNjdEIC8qIGltYWdlRnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IGltYWdlRnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTVCMDg5ODMxRDE5RDBDRDAwNDMwNjdEIC8qIGltYWdlRnJhbWVEYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNs
aWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0
OSAvKiBTaW11bGF0ZWRDbGljay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aW11bGF0ZWRDbGljay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFD
NkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjE4NTgsNyArMjE4NjQsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2
NEYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkw
RkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIw
QjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLywKQEAgLTIxODg1LDYgKzIxODkwLDcg
QEAKIAkJCQlBODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJ
CQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJ
CQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJ
CQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJ
CQkxRkM0MEZCODE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAg
Ki8sCiAJCQkJMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGlt
ZXIuaCAqLywKIAkJCQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25N
YXRyaXhDRy5jcHAgKi8sCkBAIC0yMjAzNiw2ICsyMjA0Miw4IEBACiAJCQkJNDNEMjU5NzYxM0M4
MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJE
MDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQx
MDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJCQkJNTVCMDg5ODIxRDE5RDBDRDAwNDMwNjdE
IC8qIGltYWdlRnJhbWVEYXRhLmNwcCAqLywKKwkJCQk1NUIwODk4MzFEMTlEMENEMDA0MzA2N0Qg
LyogaW1hZ2VGcmFtZURhdGEuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyog
SW1hZ2VPYnNlcnZlci5oICovLAogCQkJCUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJbWFn
ZU9yaWVudGF0aW9uLmNwcCAqLywKIAkJCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1h
Z2VPcmllbnRhdGlvbi5oICovLApAQCAtMjIwODUsNiArMjIwOTMsNyBAQAogCQkJCTJENTAwMkZB
MUI1NkQ3OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggKi8sCiAJCQkJQThGQTZFNUMwRTRD
RkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1
Q0Y0OSAvKiBQYXR0ZXJuLmggKi8sCisJCQkJNTU3NEYwODUxRDAyNzQ0NDAwQjlGMTRDIC8qIFBs
YXRmb3JtSW1hZ2UuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZv
cm1MYXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyog
UGxhdGZvcm1UZXh0VHJhY2suaCAqLywKQEAgLTI1ODM2LDYgKzI1ODQ1LDcgQEAKIAkJCQk4NUU3
MTFCOTBBQzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTE1hcEVsZW1lbnRJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM1MTU3OUYwQzAzQkJEMzAwOEJCMEVFIC8qIERPTUhUTUxNYXJxdWVl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1MTU2RUEwQzAzQjc0MTAwOEJCMEVFIC8q
IERPTUhUTUxNYXJxdWVlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTc0
RjA4NzFEMDI3OTA5MDBCOUYxNEMgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkRFQzY2NTUxQzgyRDA0MTAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJERUM2NjUxMUM4MkQwMTYwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFF
bGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QkE0RDEzMEFBNjg4NjgwMDg4
MDUyRCAvKiBET01IVE1MTWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjU5MzAsNiAr
MjU5NDAsNyBAQAogCQkJCUE5QzZFNEVDMEQ3NDVFMkIwMDY0NDJFOSAvKiBET01QbHVnaW4uaCBp
biBIZWFkZXJzICovLAogCQkJCUE5QzZFNEYwMEQ3NDVFMzgwMDY0NDJFOSAvKiBET01QbHVnaW5B
cnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxQTM3QkIwOTdDNzE1RjAwMTlGM0Q4IC8qIERP
TVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1QjA4OTg1MUQxOUQwQ0QwMDQzMDY3RCAv
KiBpbWFnZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVGNTZBN0EwQTk4Q0UzNzAw
QURCNjBBIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODVFNzExRDUwQUM1RDUzNTAwNTMyNzBGIC8qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbkludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NzMzNTBENjk1QkJFMDA2RUY1MTcgLyogRE9N
UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTIwNCw3ICsyOTIxNSw3IEBACiAJ
CQkJRkRDNTRGMDQxMzk5QjBEQTAwOEQ5MTE3IC8qIEJpcXVhZEZpbHRlck5vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQzMTYwMjYxMkIwMjY3NjAwQzFBMzU5IC8qIEJpcXVhZFByb2Nlc3Nv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODk5NDMyOTBCNDIzMzg4MDBEN0M4MDIgLyogQml0
bWFwSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3
IC8qIEJpdG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzc3QTNBOTAxNUVGQ0U5
QjAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzZE
NkM3ODEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRURF
RjFGMzEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTFEMzFDREMxOTE5NjAyMDAwMTAwNUEzIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMxODY2LDYgKzMxODc3LDcgQEAKIAkJCQlCMjIyN0FBNTBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEFGRDAw
RjBEQUYzMzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjIyMjdBQTgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTU1QjA4OTg0MUQxOUQwQ0QwMDQzMDY3RCAvKiBpbWFnZUZyYW1lRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FBQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3Ry
aW5nTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0FCNzBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHU3R5bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUJBMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCA0MDExZWEzZmQ4YzA0Njk3NGM1NWQ0OGUzOTZmMWI4
M2I4MWYzMzVkLi5hNWFjNGYwNWFlMzM5YThkNjQ3MDZjMTBmYzBmN2FmNDA0MjU2MjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKHZvaWQp
Z2V0UHJldmlld1NuYXBzaG90SW1hZ2U6KENHSW1hZ2VSZWYqKWNnSW1hZ2UgYW5kUmVjdHM6KE5T
QXJyYXkgKiopcmVjdHMKIAogICAgIGlmICh0ZXh0SW5kaWNhdG9yKSB7CiAgICAgICAgIGlmIChJ
bWFnZSogaW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKSkKLSAgICAgICAgICAg
ICpjZ0ltYWdlID0gKENHSW1hZ2VSZWYpQ0ZBdXRvcmVsZWFzZShDR0ltYWdlUmV0YWluKGltYWdl
LT5nZXRDR0ltYWdlUmVmKCkpKTsKKyAgICAgICAgICAgICpjZ0ltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlKCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHJlY3RBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KaW5k
ZXggMzY0YTlhODdjZTZmMDY2Mzk0OGI4ODQ2ZThlMmNlNmQxOTBmMjQ4OS4uYTc0ZGE4NWFjZWNh
M2M2Njk4ZGQxNTZhYjMxYTZjOTcxYTM1NGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNjIsOSArMTYyLDkgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSB0ZXh0SW5kaWNhdG9yOihQYXNzUmVm
UHRyPFRleHRJbmRpY2EKICAgICBjb250ZW50c0ltYWdlTG9naWNhbFNpemUuc2NhbGUoMSAvIF90
ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcigpKTsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZTsKICAgICBpZiAoaW5kaWNhdG9yV2FudHNDb250ZW50
Q3Jvc3NmYWRlKCpfdGV4dEluZGljYXRvcikpCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4
dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCgpLT5nZXRDR0ltYWdlUmVmKCk7
CisgICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlV2l0
aEhpZ2hsaWdodCgpLT5uYXRpdmVJbWFnZSgpOwogICAgIGVsc2UKLSAgICAgICAgY29udGVudHNJ
bWFnZSA9IF90ZXh0SW5kaWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpOwor
ICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBib3VuY2VMYXll
cnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIApAQCAtMjY1LDcg
KzI2NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0FLZXlmcmFtZUFuaW1hdGlvbj4gY3JlYXRlQm91
bmNlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0CiBzdGF0aWMgUmV0YWluUHRyPENBQmFz
aWNBbmltYXRpb24+IGNyZWF0ZUNvbnRlbnRDcm9zc2ZhZGVBbmltYXRpb24oQ0ZUaW1lSW50ZXJ2
YWwgZHVyYXRpb24sIFRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IpCiB7CiAgICAgUmV0YWlu
UHRyPENBQmFzaWNBbmltYXRpb24+IGNyb3NzZmFkZUFuaW1hdGlvbiA9IFtDQUJhc2ljQW5pbWF0
aW9uIGFuaW1hdGlvbldpdGhLZXlQYXRoOkAiY29udGVudHMiXTsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY29udGVudHNJbWFnZSA9IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPmdl
dENHSW1hZ2VSZWYoKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY29udGVudHNJbWFnZSA9
IHRleHRJbmRpY2F0b3IuY29udGVudEltYWdlKCktPm5hdGl2ZUltYWdlKCk7CiAgICAgW2Nyb3Nz
ZmFkZUFuaW1hdGlvbiBzZXRUb1ZhbHVlOihpZCljb250ZW50c0ltYWdlLmdldCgpXTsKICAgICBb
Y3Jvc3NmYWRlQW5pbWF0aW9uIHNldEZpbGxNb2RlOmtDQUZpbGxNb2RlRm9yd2FyZHNdOwogICAg
IFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0UmVtb3ZlZE9uQ29tcGxldGlvbjpOT107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMDY3
NmNlMDcyNTA3NmJiOTVjY2QyNmM1YzFhNTI4ZDE2M2E0NjUyYS4uZWJiZjM1MTY3ZTc3OThlM2U1
NmYxYzdjMGY5ZTYyYWQxMTY5YjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNjgsMTUgKzY4LDEzIEBAIEJpdG1hcEltYWdl
OjpCaXRtYXBJbWFnZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKICAgICAsIG1faGF2ZUZyYW1lQ291bnQodHJ1ZSkKICAgICAsIG1fYW5pbWF0aW9uRmlu
aXNoZWRXaGVuQ2F0Y2hpbmdVcChmYWxzZSkKIHsKKyAgICBtX2ZyYW1lcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KDEpOworICAgIG1fZnJhbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGltYWdl
KSk7CisgICAgCiAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0
IGZpZ3VyZSBvdXQgdGhlIGltYWdlIG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNw
ZWN0aW5nT3JpZW50YXRpb24gdG8gYmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4
MC4KLSAgICBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBOYXRpdmVJbWFn
ZTo6c2l6ZShpbWFnZSk7CisgICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXpl
ID0gbV9mcmFtZXNbMF0uc2l6ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgp
ICogNDsKLSAgICAKLSAgICBtX2ZyYW1lcy5ncm93KDEpOwotICAgIG1fZnJhbWVzWzBdLm1faGFz
QWxwaGEgPSBOYXRpdmVJbWFnZTo6aGFzQWxwaGEoaW1hZ2UpOwotICAgIG1fZnJhbWVzWzBdLm1f
aGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1swXS5tX2ltYWdlID0gV1RGTW92ZShp
bWFnZSk7CiB9CiAKIEJpdG1hcEltYWdlOjp+Qml0bWFwSW1hZ2UoKQpAQCAtMTA1LDcgKzEwMyw3
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgp
CiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0uaGFzSW1hZ2UoKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xl
U2VjdXJpdHlPcmlnaW4oKSBjb25zdApAQCAtMTI1LDkgKzEyMyw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIC8vIFRoZSB1
bmRlcmx5aW5nIGZyYW1lIGlzbid0IGFjdHVhbGx5IGNoYW5naW5nICh3ZSdyZSBqdXN0IHRyeWlu
ZyB0bwogICAgICAgICAvLyBzYXZlIHRoZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlciBkYXRh
KSwgc28gd2UgZG9uJ3QgbmVlZCB0byBjbGVhcgogICAgICAgICAvLyB0aGUgbWV0YWRhdGEuCi0g
ICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1lQnl0ZXM7Ci0g
ICAgICAgIGlmIChtX2ZyYW1lc1tpXS5jbGVhcihmYWxzZSkpCi0gICAgICAgICAgICBmcmFtZUJ5
dGVzQ2xlYXJlZCArPSBmcmFtZUJ5dGVzOworICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBt
X2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpOwogICAg
IH0KIAogICAgIG1fc291cmNlLmNsZWFyKGRlc3Ryb3lBbGwsIGNsZWFyQmVmb3JlRnJhbWUsIGRh
dGEoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTUwLDggKzE0Niw4IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgYWxsRnJhbWVCeXRlcyA9IDA7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgYWxsRnJh
bWVCeXRlcyArPSBtX2ZyYW1lc1tpXS51c2VkRnJhbWVCeXRlcygpOworICAgIGZvciAoYXV0byYg
ZnJhbWUgOiBtX2ZyYW1lcykKKyAgICAgICAgYWxsRnJhbWVCeXRlcyArPSBmcmFtZS5mcmFtZUJ5
dGVzKCk7CiAKICAgICBpZiAoYWxsRnJhbWVCeXRlcyA+IGxhcmdlQW5pbWF0aW9uQ3V0b2ZmKSB7
CiAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBkZXN0cm95RGVjb2RlZERhdGFJ
Zk5lY2Vzc2FyeSBkZXN0cm95aW5nRGF0YTogYWxsRnJhbWVCeXRlcz0ldSBjdXRvZmY9JXUiLCB0
aGlzLCBhbGxGcmFtZUJ5dGVzLCBsYXJnZUFuaW1hdGlvbkN1dG9mZik7CkBAIC0xNzcsNyArMTcz
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KHVuc2lnbmVk
IGZyYW1lQnl0ZXNDbGVhcmVkLCBDbGVhcmVkU28KICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
ZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgLXNhZmVDYXN0PGludD4oZnJhbWVCeXRlc0NsZWFyZWQp
KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNo
aW5nKQordm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGlu
ZykKIHsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIEFTU0VSVCht
X2RlY29kZWRTaXplID09IDAgfHwgbnVtRnJhbWVzID4gMSk7CkBAIC0xODUsMjUgKzE4MSwxMiBA
QCB2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbQogICAgIGlmIChtX2ZyYW1lcy5zaXplKCkgPCBudW1G
cmFtZXMpCiAgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKIAotICAgIGlmIChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKSB7Ci0gICAgICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2ltYWdlID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xl
dmVsID0gc3Vic2FtcGxpbmdMZXZlbDsKLSAgICB9Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9v
cmllbnRhdGlvbiA9IG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlID0gbV9zb3VyY2UuZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCk7Cisg
ICAgbV9mcmFtZXNbaW5kZXhdID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVEYXRhQXRJbmRleChpbmRl
eCwgc3Vic2FtcGxpbmdMZXZlbCwgY2FjaGluZyk7CiAKLSAgICBpZiAocmVwZXRpdGlvbkNvdW50
KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZHVy
YXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7CisgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0
ZSAlZCkiLCB0aGlzLCBpbmRleCwgY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6
TWV0YWRhdGEgPyAibWV0YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0uZnJhbWVC
eXRlcygpLCBtX2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7Ci0KLSAgICBMT0coSW1hZ2VzLCAiQml0bWFw
SW1hZ2UgJXAgY2FjaGVGcmFtZSAlbHUgKCVzJXUgYnl0ZXMsIGNvbXBsZXRlICVkKSIsIHRoaXMs
IGluZGV4LCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgPyAibWV0YWRhdGEgb25s
eSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzLCBtX2ZyYW1lc1tpbmRleF0u
bV9pc0NvbXBsZXRlKTsKLQotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkgewotICAg
ICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4obV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcyk7CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpKSB7CisgICAgICAg
IGludCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRl
cygpKTsKICAgICAgICAgbV9kZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOwogICAgICAgICAvLyBU
aGUgZnVsbHktZGVjb2RlZCBmcmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVk
IGRhdGEgdXNlZAogICAgICAgICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KQEAg
LTI4OCwyMSArMjcxLDE5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIGZyYW1lIGFmZmVjdGVkIGJ5IGFwcGVuZGluZyBuZXcgZGF0
YSBoZXJlLiBUaHVzIHdlIGhhdmUgdG8gY2xlYXIgYWxsIHRoZQogICAgIC8vIGluY29tcGxldGUg
ZnJhbWVzIHRvIGJlIHNhZmUuCiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICBm
b3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpIHsKICAgICAgICAgLy8gTk9URTogRG9uJ3QgY2Fs
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KCkgaGVyZSwgdGhhdCB3aWxsIHRyeSB0bwogICAgICAg
ICAvLyBkZWNvZGUgYW55IHVuY2FjaGVkIChpLmUuIG5ldmVyLWRlY29kZWQgb3IKICAgICAgICAg
Ly8gY2xlYXJlZC1vbi1hLXByZXZpb3VzLXBhc3MpIGZyYW1lcyEKLSAgICAgICAgdW5zaWduZWQg
ZnJhbWVCeXRlcyA9IG1fZnJhbWVzW2ldLm1fZnJhbWVCeXRlczsKLSAgICAgICAgaWYgKG1fZnJh
bWVzW2ldLm1faGF2ZU1ldGFkYXRhICYmICFtX2ZyYW1lc1tpXS5tX2lzQ29tcGxldGUpCi0gICAg
ICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSAobV9mcmFtZXNbaV0uY2xlYXIodHJ1ZSkgPyBm
cmFtZUJ5dGVzIDogMCk7CisgICAgICAgIGlmIChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFt
ZS5pc0NvbXBsZXRlKCkpCisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5j
bGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6Tm9uZSk7CiAgICAgfQogICAgIGRlc3Ryb3lN
ZXRhZGF0YUFuZE5vdGlmeShmcmFtZUJ5dGVzQ2xlYXJlZCwgQ2xlYXJlZFNvdXJjZTo6Tm8pOwog
I2Vsc2UKICAgICAvLyBGSVhNRTogd2h5IGlzIHRoaXMgZGlmZmVyZW50IGZvciBpT1M/CiAgICAg
aW50IGRlbHRhQnl0ZXMgPSAwOwogICAgIGlmICghbV9mcmFtZXMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGludCBieXRlcyA9IG1fZnJhbWVzW21fZnJhbWVzLnNpemUoKSAtIDFdLm1fZnJhbWVCeXRl
czsKLSAgICAgICAgaWYgKG1fZnJhbWVzW21fZnJhbWVzLnNpemUoKSAtIDFdLmNsZWFyKHRydWUp
KSB7CisgICAgICAgIGlmIChpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1lcy5zaXplKCkgLSAx
XS5jbGVhcih0cnVlKSkgewogICAgICAgICAgICAgZGVsdGFCeXRlcyArPSBieXRlczsKICAgICAg
ICAgICAgIGRlbHRhQnl0ZXMgKz0gbV9kZWNvZGVkUHJvcGVydGllc1NpemU7CiAgICAgICAgICAg
ICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7CkBAIC0zNjYsMTUgKzM0NywxNSBAQCBib29s
IEJpdG1hcEltYWdlOjppc1NpemVBdmFpbGFibGUoKQogICAgIHJldHVybiBtX3NpemVBdmFpbGFi
bGU7CiB9CiAKLWJvb2wgQml0bWFwSW1hZ2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGlu
ZGV4LCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNhY2hpbmcpCitib29sIEJpdG1hcEltYWdlOjpl
bnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcg
Y2FjaGluZykKIHsKICAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpCi0gICAgICAgIHx8
IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lICYmICFtX2ZyYW1lc1tpbmRl
eF0ubV9pbWFnZSkKLSAgICAgICAgfHwgKGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25s
eSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKSkKLSAgICAgICAgY2FjaGVGcmFt
ZShpbmRleCwgMCwgZnJhbWVDYWNoaW5nKTsKKyAgICAgICAgfHwgKGNhY2hpbmcgPT0gSW1hZ2VG
cmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UgJiYgIW1fZnJhbWVzW2luZGV4XS5o
YXNJbWFnZSgpKQorICAgICAgICB8fCAoY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGlu
Zzo6TWV0YWRhdGEgJiYgIW1fZnJhbWVzW2luZGV4XS5oYXNNZXRhZGF0YSgpKSkKKyAgICAgICAg
Y2FjaGVGcmFtZShpbmRleCwgMCwgY2FjaGluZyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTM4OCwxMCArMzY5LDkgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2MKIAogICAgIC8vIFdlIG1h
eSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBoaWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGlu
IHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8vIHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2
ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5t
X2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGlu
Z0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9mcmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2lu
ZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vi
c2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAgIC8vIElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNh
Y2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUsIHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9u
LgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1tX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVz
OwotICAgICAgICBtX2ZyYW1lc1tpbmRleF0uY2xlYXIodHJ1ZSk7CisgICAgICAgIGludCBzaXpl
Q2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6
Tm9uZSk7CiAgICAgICAgIGludmFsaWRhdGVQbGF0Zm9ybURhdGEoKTsKICAgICAgICAgbV9kZWNv
ZGVkU2l6ZSArPSBzaXplQ2hhbmdlOwogICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpAQCAt
Mzk5LDQwICszNzksNzIgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJlc2VudGF0aW9uU2MKICAgICB9CiAKICAgICAv
LyBJZiB3ZSBoYXZlbid0IGZldGNoZWQgYSBmcmFtZSB5ZXQsIGRvIHNvLgotICAgIGlmIChpbmRl
eCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKQotICAgICAg
ICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBDYWNoZU1ldGFkYXRhQW5kRnJh
bWUpOworICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4
XS5oYXNJbWFnZSgpKQorICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCBzdWJzYW1wbGluZ0xldmVs
LCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CisKKyAgICByZXR1
cm4gbV9mcmFtZXNbaW5kZXhdLmltYWdlKCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBCaXRt
YXBJbWFnZTo6bmF0aXZlSW1hZ2UoKQoreworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgw
KTsKK30KKyAgICAKK05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZU9mU2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHNpemVfdCBjb3VudCA9IGZyYW1lQ291bnQo
KTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAg
ICAgYXV0byBpbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpOworICAgICAgICBpZiAoaW1hZ2Ug
JiYgUGxhdGZvcm1JbWFnZShpbWFnZSkuc2l6ZSgpID09IHNpemUpCisgICAgICAgICAgICByZXR1
cm4gaW1hZ2U7CisgICAgfQorICAgIAorICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBmaXJzdCBmcmFt
ZSBpbWFnZSBpZiB3ZSBjYW4ndCBmaW5kIHRoZSByaWdodCBzaXplCisgICAgcmV0dXJuIGZyYW1l
SW1hZ2VBdEluZGV4KDApOworfQorICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkKK3sKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0SW5k
ZXgobV9jdXJyZW50RnJhbWUpOworfQogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2lt
YWdlOworVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBCaXRtYXBJbWFnZTo6ZnJhbWVzTmF0aXZlSW1h
Z2VzKCkKK3sKKyAgICBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGltYWdlczsKKyAgICBzaXplX3Qg
Y291bnQgPSBmcmFtZUNvdW50KCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgIGlmIChhdXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgo
aSkpCisgICAgICAgICAgICBpbWFnZXMuYXBwZW5kKGltYWdlKTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIGltYWdlczsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6ZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4
LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4
LCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZTsKKyAgICByZXR1
cm4gbV9mcmFtZXNbaW5kZXhdLmlzQ29tcGxldGUoKTsKIH0KIAogZmxvYXQgQml0bWFwSW1hZ2U6
OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZy
YW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZy
YW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YSkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9u
OwotfQotCi1OYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKQotewotICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleChjdXJyZW50RnJhbWUoKSk7
CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5kdXJhdGlvbigpOwogfQogCiBib29sIEJpdG1h
cEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFl
bnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFl
bnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRh
dGEpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9o
YXZlTWV0YWRhdGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYTsK
KyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBt
X2ZyYW1lc1tpbmRleF0uaGFzQWxwaGEoKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5mcmFtZUhh
c0FscGhhQXRJbmRleChpbmRleCk7CiB9CkBAIC00NDQsMTEgKzQ1NiwxMSBAQCBib29sIEJpdG1h
cEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogCiBJbWFnZU9yaWVudGF0aW9u
IEJpdG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0g
ICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisg
ICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGlu
Zzo6TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOwogCi0gICAg
aWYgKG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJh
bWVzW2luZGV4XS5tX29yaWVudGF0aW9uOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0
YWRhdGEoKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5vcmllbnRhdGlvbigpOwog
CiAgICAgcmV0dXJuIG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CiB9CkBAIC03
MDAsMTcgKzcxMiw1NiBAQCBDb2xvciBCaXRtYXBJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9y
KCkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAgICAgCiAgICAgQVNTRVJUKG1fZnJhbWVzLnNp
emUoKSk7Ci0gICAgbV9zb2xpZENvbG9yID0gTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRD
b2xvcihtX2ZyYW1lc1swXS5tX2ltYWdlLmdldCgpKTsKKyAgICBtX3NvbGlkQ29sb3IgPSBtX2Zy
YW1lc1swXS5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICAKICAgICBBU1NFUlQobV9zb2xp
ZENvbG9yKTsKICAgICByZXR1cm4gbV9zb2xpZENvbG9yLnZhbHVlKCk7CiB9CiAgICAgCitib29s
IEJpdG1hcEltYWdlOjppc0FsbW9zdFNvbGlkQ29sb3IoKQoreworICAgIGlmIChmcmFtZUNvdW50
KCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGVuc3VyZUZyYW1l
SXNDYWNoZWQoMCkgJiYgbV9mcmFtZXNbMF0uaXNBbG1vc3RTb2xpZENvbG9yKCk7Cit9CisgICAg
CiBib29sIEJpdG1hcEltYWdlOjpjYW5BbmltYXRlKCkKIHsKICAgICByZXR1cm4gc2hvdWxkQW5p
bWF0ZSgpICYmIGZyYW1lQ291bnQoKSA+IDE7CiB9CiAKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgbW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQoreworICAgIGlmIChk
ZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworI2lmIFBMQVRGT1JNKElPUykKKyAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwor
I2Vsc2UKKyAgICBzdGFydEFuaW1hdGlvbigpOworI2VuZGlmCisgICAgCisgICAgQ29sb3IgY29s
b3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKKyAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7
CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgY29sb3IsIG9w
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhdXRvIGltYWdlID0gZnJhbWVJ
bWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIFBsYXRmb3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2Nh
bGUoY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QpKTsKKyAgICBpZiAoIWltYWdlKSAvLyBJZiBp
dCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oZGVzY3JpcHRpb24uaW1h
Z2VPcmllbnRhdGlvbigpKTsKKyAgICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50
YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgb3JpZW50YXRpb24g
PSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgCisgICAgUGxh
dGZvcm1JbWFnZShpbWFnZSkuZHJhdyhjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgbV9zaXpl
LCBvcCwgbW9kZSwgb3JpZW50YXRpb24pOworICAgIAorICAgIGlmIChpbWFnZU9ic2VydmVyKCkp
CisgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKK30KKyAgICAKIHZvaWQg
Qml0bWFwSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgSW1hZ2U6OmR1
bXAodHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmgKaW5kZXggMDc1ODkyOWNkODdmYWRhY2YwMmI2ZWQ4ZWVhZmU3ZGVmZDY2ZjBjNS4uMjIxOGM4
MjRiNTI4ZmQ2MzliYWIxMzhkZWNjOThiOTgxNmExNjgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0yOCwxMSArMjgsMTMgQEAKICNp
Zm5kZWYgQml0bWFwSW1hZ2VfaAogI2RlZmluZSBCaXRtYXBJbWFnZV9oCiAKLSNpbmNsdWRlICJJ
bWFnZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRl
ICJJbWFnZUZyYW1lRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNs
dWRlICJJbWFnZVNvdXJjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUltYWdlLmgiCiAKICNpZiBVU0UoQ0cpIHx8IFVTRShBUFBLSVQpCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgpAQCAtNDcsNjMgKzQ5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9f
ICpIQklUTUFQOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBzdHJ1Y3QgRnJh
bWVEYXRhOwotfQotCi1uYW1lc3BhY2UgV1RGIHsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0
b3JUcmFpdHM8V2ViQ29yZTo6RnJhbWVEYXRhPiA6IHB1YmxpYyBTaW1wbGVDbGFzc1ZlY3RvclRy
YWl0cyB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0
ID0gZmFsc2U7IC8vIE5vdCBhbGwgRnJhbWVEYXRhIG1lbWJlcnMgaW5pdGlhbGl6ZSB0byAwLgot
ICAgIH07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGltZXI7CiAKLW5hbWVz
cGFjZSBOYXRpdmVJbWFnZSB7Ci0gICAgSW50U2l6ZSBzaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRy
Jik7Ci0gICAgYm9vbCBoYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotICAgIENvbG9y
IHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwotfQotCi0vLyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEZyYW1l
RGF0YSBDbGFzcwotLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0KLXN0cnVjdCBGcmFtZURhdGEgewotcHVibGljOgotICAgIEZyYW1lRGF0YSgpCi0g
ICAgICAgIDogbV9oYXZlTWV0YWRhdGEoZmFsc2UpCi0gICAgICAgICwgbV9pc0NvbXBsZXRlKGZh
bHNlKQotICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgfkZy
YW1lRGF0YSgpCi0gICAgeyAKLSAgICAgICAgY2xlYXIodHJ1ZSk7Ci0gICAgfQotCi0gICAgLy8g
Q2xlYXIgdGhlIGNhY2hlZCBpbWFnZSBkYXRhIG9uIHRoZSBmcmFtZSwgYW5kIChvcHRpb25hbGx5
KSB0aGUgbWV0YWRhdGEuCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIHdhcyBjYWNoZWQg
aW1hZ2UgZGF0YSB0byBjbGVhci4KLSAgICBib29sIGNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSk7
Ci0gICAgCi0gICAgdW5zaWduZWQgdXNlZEZyYW1lQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlID8gbV9mcmFtZUJ5dGVzIDogMDsgfQotCi0gICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsK
LSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0SW1hZ2VPcmllbnRh
dGlvbiB9OwotICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVsIHsgMCB9Owot
ICAgIGZsb2F0IG1fZHVyYXRpb24geyAwIH07Ci0gICAgYm9vbCBtX2hhdmVNZXRhZGF0YSA6IDE7
Ci0gICAgYm9vbCBtX2lzQ29tcGxldGUgOiAxOwotICAgIGJvb2wgbV9oYXNBbHBoYSA6IDE7Ci0g
ICAgdW5zaWduZWQgbV9mcmFtZUJ5dGVzIHsgMCB9OwotfTsKLQotLy8gPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gQml0bWFwSW1hZ2UgQ2xhc3MK
LS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQog
Y2xhc3MgQml0bWFwSW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2UgewogICAgIGZyaWVuZCBjbGFz
cyBHZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U7CkBAIC0xNTUsMTIgKzEwMyw2IEBAIHB1YmxpYzoKICAgICBDRkRhdGFSZWYgZ2V0VElGRlJl
cHJlc2VudGF0aW9uKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotI2lmIFVTRShDRykKLSAgICBXRUJD
T1JFX0VYUE9SVCBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSBvdmVycmlkZTsKLSAgICBDR0lt
YWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7
Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIG92ZXJyaWRlOwot
I2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAgICAgYm9vbCBnZXRIQklUTUFQKEhCSVRNQVAp
IG92ZXJyaWRlOwogICAgIGJvb2wgZ2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQLCBjb25zdCBJbnRT
aXplKikgb3ZlcnJpZGU7CkBAIC0xNzQsOCArMTE2LDEzIEBAIHB1YmxpYzoKICAgICBFdmFzX09i
amVjdCogZ2V0RXZhc09iamVjdChFdmFzKikgb3ZlcnJpZGU7CiAjZW5kaWYKIAorICAgIFdFQkNP
UkVfRVhQT1JUIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CisgICAgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VPZlNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwog
ICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7
CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsgfQor
ICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gZnJhbWVzTmF0aXZlSW1hZ2VzKCkgb3ZlcnJpZGU7
CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoKTsKIAog
ICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGU7CiAKQEAgLTIx
NSw3ICsxNjIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKTsKIAogICAg
IE5hdGl2ZUltYWdlUHRyIGZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgZmxvYXQgcHJlc2VudGF0
aW9uU2NhbGVIaW50ID0gMSk7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgY29weVVuc2NhbGVkRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90KTsKIAogICAgIGJvb2wgaGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCk7CiAKQEAgLTIyNSwxMSArMTcxLDEwIEBAIHByb3RlY3RlZDoKICAgICBJbWFnZU9yaWVu
dGF0aW9uIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCk7CiAKICAgICAvLyBEZWNvZGVz
IGFuZCBjYWNoZXMgYSBmcmFtZS4gTmV2ZXIgYWNjZXNzZWQgZXhjZXB0IGludGVybmFsbHkuCi0g
ICAgZW51bSBJbWFnZUZyYW1lQ2FjaGluZyB7IENhY2hlTWV0YWRhdGFPbmx5LCBDYWNoZU1ldGFk
YXRhQW5kRnJhbWUgfTsKLSAgICB2b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyA9IENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7Cisg
ICAgdm9pZCBjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VG
cmFtZURhdGE6OkNhY2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJ
bWFnZSk7CiAKICAgICAvLyBDYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRleF0g
Zm9yIGluZm8gd2l0aG91dCBkZWNvZGluZy4gUmV0dXJucyBmYWxzZSBvbiBpbmRleCBvdXQgb2Yg
Ym91bmRzLgotICAgIGJvb2wgZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdl
RnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBib29sIGVuc3VyZUZy
YW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZyA9IEltYWdl
RnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKTsKIAogICAgIC8vIENhbGxlZCB0
byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0cm95QWxsfCBpcyB0cnVlLCB3ZSB3
aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVmZmVyIGNhY2hlIGFuZCB0ZWxsIHRo
ZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQpAQCAtMjkyLDcgKzIzNyw3IEBAIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbjsKIAogICAgIHNp
emVfdCBtX2N1cnJlbnRGcmFtZSB7IDAgfTsgLy8gVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGZy
YW1lIG9mIGFuaW1hdGlvbi4KLSAgICBWZWN0b3I8RnJhbWVEYXRhLCAxPiBtX2ZyYW1lczsgLy8g
QW4gYXJyYXkgb2YgdGhlIGNhY2hlZCBmcmFtZXMgb2YgdGhlIGFuaW1hdGlvbi4gV2UgaGF2ZSB0
byByZWYgZnJhbWVzIHRvIHBpbiB0aGVtIGluIHRoZSBjYWNoZS4KKyAgICBWZWN0b3I8SW1hZ2VG
cmFtZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBv
ZiB0aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhl
IGNhY2hlLgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2ZyYW1lVGltZXI7CiAgICAg
aW50IG1fcmVwZXRpdGlvbkNvdW50IHsgY0FuaW1hdGlvbk5vbmUgfTsgLy8gSG93IG1hbnkgdG90
YWwgYW5pbWF0aW9uIGxvb3BzIHdlIHNob3VsZCBkby4gVGhpcyB3aWxsIGJlIGNBbmltYXRpb25O
b25lIGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggN2EyOTk5MmY3NzE4OGUwMzgy
OGQ4MGE2NWI4YmUyY2Q4ZGMyZGU3Ni4uMzIyM2MxY2Q2N2EyMTA1ZWJmMmIxNTY3Njk2ODgwOTdm
YjIyNzc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0x
MzcsOCArMTM3LDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBTdHJldGNoVGls
ZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKIAorICAgIHZpcnR1YWwgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVh
bCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gSW1hZ2VPcmllbnRh
dGlvbigpOyB9CisgICAgdmlydHVhbCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IGZyYW1lc05hdGl2
ZUltYWdlcygpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUg
aW1hZ2UgZm9ybWF0cy4KIApAQCAtMTUwLDEyICsxNTMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
I2VuZGlmCiAKLSNpZiBVU0UoQ0cpCi0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldENHSW1hZ2VS
ZWYoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0
Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXplJikgeyByZXR1cm4gbnVsbHB0cjsgfQotICAg
IHZpcnR1YWwgUmV0YWluUHRyPENGQXJyYXlSZWY+IGdldENHSW1hZ2VBcnJheSgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgYm9v
bCBnZXRIQklUTUFQKEhCSVRNQVApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgY29uc3QgSW50U2l6ZSopIHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAKaW5kZXggZGRkOGE1NWJhMDkwNmM1ODY2YTE5MmNmOGU0MTRlYTcwN2I3MjhhYy4uODJmNmUy
ZDZlNDU0MzNkYTFhN2Q1NmIzNzBkZmE2MWE0YzQxOTEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjI0LDYgKzIyNCwxMSBA
QCBOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldgogICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gbV9k
ZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCkg
OiBudWxscHRyOwogfQogCitJbWFnZUZyYW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVE
YXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGluZykKK3sKKyAgICByZXR1cm4gaW5pdGlh
bGl6ZWQoKSA/IEltYWdlRnJhbWVEYXRhKCptX2RlY29kZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xl
dmVsLCBjYWNoaW5nKSA6IEltYWdlRnJhbWVEYXRhKCk7Cit9CisgICAgCiB2b2lkIEltYWdlU291
cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGlmIChtX2FsbG93U3Vic2Ft
cGxpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAppbmRleCA2MDM1NzM5YjdlOGIwOTZkYzhkZmU5YzUzMGE0MmM2ZjI5MWJkYTAwLi5hNDBjN2Nl
OTMwN2NkYWRmMDc5YWI3MDFhODI3OTliNjkwNTI5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5k
ZWYgSW1hZ2VTb3VyY2VfaAogI2RlZmluZSBJbWFnZVNvdXJjZV9oCiAKKyNpbmNsdWRlICJJbWFn
ZUZyYW1lRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJ
bnRQb2ludC5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCkBAIC02Myw5ICs2NCw2IEBA
IGNvbnN0IGludCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAwOwogY29uc3QgaW50IGNBbmltYXRpb25M
b29wSW5maW5pdGUgPSAtMTsKIGNvbnN0IGludCBjQW5pbWF0aW9uTm9uZSA9IC0yOwogCi0vLyBT
dWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9u
cyBvbiBlYWNoIGF4aXMgZXRjLgotdHlwZWRlZiBzaG9ydCBTdWJzYW1wbGluZ0xldmVsOwotCiBj
bGFzcyBJbWFnZVNvdXJjZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2Up
OwogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTEzMiwxOCArMTMwLDE5IEBAIHB1
YmxpYzoKICAgICBib29sIGFsbG93U3Vic2FtcGxpbmdPZkZyYW1lQXRJbmRleChzaXplX3QpIGNv
bnN0OwogICAgIAogICAgIC8vIFNpemUgb2Ygb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZyYW1lLgot
ICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAw
LCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKSBjb25zdDsKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OwogICAgIAogICAg
IC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0
aGUgZnJhbWUgaXMgbm90IHlldAogICAgIC8vIGRlY29kZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1
bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCkgY29uc3Q7CiAgICAgCiAgICAgZmxvYXQg
ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OyAvLyBFWElGIGltYWdlIG9yaWVudGF0aW9uCiAg
ICAgCiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNs
ZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIo
KSBhYm92ZS4KLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxp
bmdMZXZlbCk7CisgICAgSW1hZ2VGcmFtZURhdGEgY3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFn
ZSk7CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWI3YWVhNDg5ZjNlYjJhODI4NzcxYzIxMDNlOGQ0ZDBiZTE3YmU1ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtSW1hZ2UuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
cy5oIgorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFn
ZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgRmxv
YXRSZWN0OworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKKworY2xhc3Mg
UGxhdGZvcm1JbWFnZSB7CitwdWJsaWM6CisgICAgUGxhdGZvcm1JbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UpCisgICAgICAgIDogbV9pbWFnZShpbWFnZSkKKyAgICB7CisgICAgfQor
CisgICAgYm9vbCBpc05pbCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltYWdlOyB9CisgICAgdm9pZCBj
bGVhclN1YkltYWdlcygpOworCisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBo
YXNBbHBoYSgpIGNvbnN0OworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0
OworICAgIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYpIGNvbnN0OworCisgICAgc3RhdGljIGZs
b2F0IHN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKKworcHJpdmF0ZToKKyNpZiBVU0Uo
Q0cpCisgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlUmVmKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSA/
IG1faW1hZ2UuZ2V0KCkgOiBudWxscHRyOyB9CisjZW5kaWYKKyAgICBOYXRpdmVJbWFnZVB0ciBt
X2ltYWdlOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDg0YzdkNjIz
MjRmNjQ3MTFlMTY1ZTUyNDNkZjg4ZjIxYTUwZWQ3ZTkuLjIwYjU2ODkzMzc1MmFkMGZjZTEwYjM2
NGZlMDEyZDQ4MWU2NDdkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTIxMiw3
ICsyMTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBk
YXRlRGlzcGxheU1vZGUoKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPmdldENH
SW1hZ2VSZWYoKTsKKyAgICAgICAgICAgICAgICBtX3BhdXNlZEltYWdlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdXNlZElt
YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZGlzcGxheU1vZGUgPSBQYWludEl0QmxhY2s7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc3MjJiZWM1M2FiOGEwOGE4ZGE4NTI4YjllMGQ3
YzRkMGNkNDEzNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkJpdG1hcEltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJUk8pCi0KLSNpbmNsdWRlICJDYWlyb1V0
aWxpdGllcy5oIgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9y
bUNvbnRleHRDYWlyby5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgTmF0aXZlSW1hZ2UgewotCi1JbnRT
aXplIHNpemUoY29uc3QgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4mIGltYWdlKQotewotICAgIHJl
dHVybiBjYWlyb1N1cmZhY2VTaXplKGltYWdlLmdldCgpKTsKLX0KLQotYm9vbCBoYXNBbHBoYShj
b25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgcmV0dXJuIGNhaXJv
X3N1cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7
Ci19Ci0KLUNvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgQVNTRVJUKGltYWdlKTsKLSAgICAKLSAgICBpZiAoTmF0
aXZlSW1hZ2U6OnNpemUoaW1hZ2UpICE9IEludFNpemUoMSwgMSkpCi0gICAgICAgIHJldHVybiBD
b2xvcigpOwotCi0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9
IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAg
ICBSR0JBMzIqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiBjb2xvckZyb21Q
cmVtdWx0aXBsaWVkQVJHQigqcGl4ZWwpOwotfQotCi19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAotICAgIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKLXsKLSAgICBp
ZiAoIWRzdC53aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMu
aGVpZ2h0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0KLSAg
ICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAg
aWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJseSB3ZSB3b24ndCBoYXZlIGFuIGltYWdl
IHlldC4KLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNv
bGlkQ29sb3IoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRo
U29saWRDb2xvcihjb250ZXh0LCBkc3QsIGNvbG9yLCBvcCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBjb250ZXh0LnNhdmUoKTsKLQotICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcg
b3BlcmF0aW9uLgotICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9k
ZSA9PSBCbGVuZE1vZGVOb3JtYWwgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZy
YW1lKSkKLSAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29w
eSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwg
YmxlbmRNb2RlKTsKLQotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0g
ICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShzdXJmYWNlLmdldCgpKTsK
LSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25T
YW1wbGluZyhzcmMsIHNjYWxlZFNpemUpOwotI2Vsc2UKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRT
cmNSZWN0KHNyYyk7Ci0jZW5kaWYKLQotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRh
dGlvbihkZXNjcmlwdGlvbi5pbWFnZU9yaWVudGF0aW9uKCkpOwotICAgIGlmIChkZXNjcmlwdGlv
bi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQot
ICAgICAgICBmcmFtZU9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJy
ZW50RnJhbWUpOwotCi0gICAgRmxvYXRSZWN0IGRzdFJlY3QgPSBkc3Q7Ci0KLSAgICBpZiAoZnJh
bWVPcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgewotICAgICAgICAvLyBJ
bWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCi0gICAg
ICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7Ci0gICAgICAg
IGRzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgY29udGV4dC5jb25j
YXRDVE0oZnJhbWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUo
KSkpOwotICAgICAgICBpZiAoZnJhbWVPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7
Ci0gICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdz
IHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9m
Ci0gICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5
b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgotICAgICAgICAgICAgZHN0
UmVjdCA9IEZsb2F0UmVjdChkc3RSZWN0LngoKSwgZHN0UmVjdC55KCksIGRzdFJlY3QuaGVpZ2h0
KCksIGRzdFJlY3Qud2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RS
ZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGNvbnRleHQpOwotCi0gICAgY29udGV4dC5yZXN0b3JlKCk7
Ci0KLSAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQotICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRp
ZERyYXcodGhpcyk7Ci19Ci0KLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRh
dGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0g
ZmFsc2U7Ci0KLSAgICBpZiAobV9pbWFnZSkgewotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1h
Z2VDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBhZGFlYzI3MGUzMWIwNTRhZmM1ZjY2ZDQ4Mjg4YWVi
ZjA2MWUzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2lmIFVTRShDQUlSTykKKworI2lu
Y2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aCIKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgUGxh
dGZvcm1JbWFnZTo6Y2xlYXJTdWJJbWFnZXMoKQoreworfQorCitJbnRTaXplIFBsYXRmb3JtSW1h
Z2U6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDogY2Fp
cm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKK30KKworYm9vbCBQbGF0Zm9ybUltYWdlOjpo
YXNBbHBoYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzTmlsKCkgfHwgY2Fpcm9fc3VyZmFjZV9n
ZXRfY29udGVudChtX2ltYWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOworfQorCitD
b2xvciBQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAg
IGlmIChpc05pbCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1faW1hZ2UuZ2V0KCkp
ICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAgICAgICAgcmV0dXJuIENvbG9yKCk7CisK
KyAgICBSR0JBMzIqIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX2ltYWdlLmdldCgpKSk7CisgICAgcmV0dXJuIGNvbG9y
RnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6
aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Zs
b2F0IFBsYXRmb3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JikKK3sKKyAgICByZXR1cm4gMTsKK30KKwor
dm9pZCBQbGF0Zm9ybUltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRT
aXplJiwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9y
aWVudGF0aW9uJiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAg
ICAKKyAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KKyAgICBpZiAob3AgPT0g
Q29tcG9zaXRlU291cmNlT3ZlciAmJiBtb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhaGFzQWxw
aGEoKSkKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29w
eSk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwg
bW9kZSk7CisgICAgICAgIAorI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcp
CisgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgp
KTsKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gYWRqdXN0U291cmNlUmVjdEZvckRv
d25TYW1wbGluZyhzcmNSZWN0LCBzY2FsZWRTaXplKTsKKyNlbHNlCisgICAgRmxvYXRSZWN0IGFk
anVzdGVkU3JjUmVjdChzcmNSZWN0KTsKKyNlbmRpZgorICAgICAgICAKKyAgICBGbG9hdFJlY3Qg
YWRqdXN0ZWREZXN0UmVjdCA9IGRlc3RSZWN0OworICAgICAgICAKKyAgICBpZiAob3JpZW50YXRp
b24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgLy8gSW1hZ2VPcmllbnRh
dGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgorICAgICAgICBjb250ZXh0
LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CisgICAgICAgIGFkanVzdGVk
RGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5jb25j
YXRDVE0ob3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5z
aXplKCkpKTsKKyAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsK
KyAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mg
d2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YK
KyAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlv
dXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCisgICAgICAgICAgICBhZGp1
c3RlZERlc3RSZWN0LnNldFNpemUoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkudHJhbnNwb3NlZFNp
emUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5kcmF3U3VyZmFjZVRvQ29udGV4dChtX2ltYWdlLmdldCgpLCBhZGp1c3RlZERlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIGNvbnRleHQpOworCisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzgxYTE3MGJlNzlhZTZiZTZjYWNkYzk5
ZjRjMzk4Y2FhZjQyNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKLQotI2lmIFVTRShDRykKLQotI2luY2x1ZGUgIkNv
cmVHcmFwaGljc1NQSS5oIgotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUg
Ikdlb21ldHJ5VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNp
bmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1l
ci5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFVTRShBUFBLSVQpCi0jaW5j
bHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jZW5kaWYK
LQotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUlu
dGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLW5hbWVzcGFjZSBOYXRpdmVJbWFnZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQotewotICAgIEFTU0VSVChpbWFnZSk7Ci0gICAg
cmV0dXJuIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhl
aWdodChpbWFnZS5nZXQoKSkpOwotfQotCi1ib29sIGhhc0FscGhhKGNvbnN0IFJldGFpblB0cjxD
R0ltYWdlUmVmPiYpCi17Ci0gICAgLy8gRklYTUU6IEFuc3dlciBjb3JyZWN0bHkgdGhlIHF1ZXN0
aW9uOiBkb2VzIHRoZSBDR0ltYWdlUmVmIGhhdmUgYWxwaGEgY2hhbm5uZWw/Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0gICAgCi1Db2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKLXsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAotICAg
IGlmIChOYXRpdmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAgICAg
cmV0dXJuIENvbG9yKCk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdC
QQotICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLAotICAg
ICAgICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIz
MkJpZykpOwotCi0gICAgaWYgKCFiaXRtYXBDb250ZXh0KQotICAgICAgICByZXR1cm4gQ29sb3Io
KTsKLSAgICAKLSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwg
a0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQu
Z2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGltYWdlLmdldCgpKTsKLSAgICAKLSAgICBp
ZiAoIXBpeGVsWzNdKQotICAgICAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7Ci0KLSAgICBy
ZXR1cm4gQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBw
aXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwotfQotCi19Ci0K
LWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNs
ZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBtX3N1
YnNhbXBsaW5nTGV2ZWwgPSAwOwotCi0gICAgaWYgKG1faW1hZ2UpIHsKLSNpZiBDQUNIRV9TVUJJ
TUFHRVMKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7
Ci0jZW5kaWYKLSAgICAgICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLUNHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6
OmdldENHSW1hZ2VSZWYoKQotewotICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCgwKS5nZXQo
KTsKLX0KLQotQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDR0lt
YWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAgaWYg
KGNnSW1hZ2UgJiYgSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFnZSksIENHSW1hZ2VHZXRI
ZWlnaHQoY2dJbWFnZSkpID09IHNpemUpCi0gICAgICAgICAgICByZXR1cm4gY2dJbWFnZTsKLSAg
ICB9Ci0KLSAgICAvLyBGYWxsYmFjayB0byB0aGUgZGVmYXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNh
bid0IGZpbmQgdGhlIHJpZ2h0IHNpemUKLSAgICByZXR1cm4gZ2V0Q0dJbWFnZVJlZigpOwotfQot
Ci1SZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VBcnJheSgpCi17
Ci0gICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGlmICghY291bnQpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0g
Q0ZBcnJheUNyZWF0ZU11dGFibGUoTlVMTCwgY291bnQsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBpZiAo
Q0dJbWFnZVJlZiBjdXJyRnJhbWUgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKSkKLSAgICAg
ICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgY3VyckZyYW1lKTsKLSAgICB9Ci0gICAg
cmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwotfQotCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQotewotI2lm
IFBMQVRGT1JNKElPUykKLSAgICBzdGFydEFuaW1hdGlvbihEb05vdENhdGNoVXApOwotI2Vsc2UK
LSAgICBzdGFydEFuaW1hdGlvbigpOwotI2VuZGlmCi0KLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2U7Ci0gICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5n
IGludG8gUERGIGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0
LnBsYXRmb3JtQ29udGV4dCgpKSkKLSAgICAgICAgaW1hZ2UgPSBjb3B5VW5zY2FsZWRGcmFtZUlt
YWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0
cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRl
c3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOwotICAgICAg
ICBmbG9hdCBzdWJzYW1wbGluZ1NjYWxlID0gc3RkOjptaW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRy
YW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNpemUud2lkdGggLyBzcmNSZWN0LndpZHRoKCksIHRy
YW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNpemUuaGVpZ2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkp
OwotCi0gICAgICAgIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1
YnNhbXBsaW5nU2NhbGUpOwotICAgIH0KLQotICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9v
IGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKLSAgICBpZiAoY29s
b3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVj
dCwgY29sb3IsIGNvbXBvc2l0ZU9wKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0
aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIGltYWdlU2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2Uu
Z2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci0gICAgCi0gICAgLy8gc3Jj
UmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28g
d2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0
IHNjYWxlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGlmIChpbWFnZVNpemUgIT0gbV9zaXplKSB7
Ci0gICAgICAgIEZsb2F0UmVjdCBvcmlnaW5hbEltYWdlQm91bmRzKEZsb2F0UG9pbnQoKSwgbV9z
aXplKTsKLSAgICAgICAgRmxvYXRSZWN0IHN1YnNhbXBsZWRJbWFnZUJvdW5kcyhGbG9hdFBvaW50
KCksIGltYWdlU2l6ZSk7Ci0gICAgICAgIHNjYWxlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3Qs
IG9yaWdpbmFsSW1hZ2VCb3VuZHMsIHN1YnNhbXBsZWRJbWFnZUJvdW5kcyk7Ci0gICAgfQotICAg
IAotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb247Ci0gICAgaWYgKGRlc2NyaXB0aW9u
LnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCi0g
ICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJh
bWUpOwotCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsK
LQotICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlk
RHJhdyh0aGlzKTsKLX0KLQotUmV0YWluUHRyPENHSW1hZ2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5
VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgpCi17Ci0gICAgaWYgKGluZGV4
ID49IGZyYW1lQ291bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoaW5k
ZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAg
ICAgY2FjaGVGcmFtZShpbmRleCwgMCk7Ci0KLSAgICBpZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1
YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsK
LQotICAgIHJldHVybiBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7Ci19
Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGI0MjhkNTBkOTRiZjkyNDI4MDMyODdk
MmVlYzE2YmQ2OWM1MjhkOTIuLjNkYWExMzlhYjdlYTViNDIxNTc3ODgzNWQzNTNkOGFkYjVmMGM3
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVy
bkNHLmNwcApAQCAtNzIsNyArNzIsNyBAQCBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8v
IElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2Ut
YmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBh
dm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAgICAgaWYgKG1fcmVwZWF0WCAmJiBtX3Jl
cGVhdFkpCi0gICAgICAgIHJldHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5z
Zm9ybSh0aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpLCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1Bh
dHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAgICAgICByZXR1cm4gd2tDR1BhdHRlcm5D
cmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUltYWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0
KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAK
ICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVw
LCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCiAg
ICAgLy8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVuZGVyZWQuCkBAIC04Myw3ICs4Myw3IEBA
IENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/
IHRpbGVSZWN0LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2ls
bCByZWxlYXNlIHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0
ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJlZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFn
ZVJldGFpbih0aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpKTsKKyAgICBDR0ltYWdlUmVmIHBs
YXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKS5sZWFrUmVmKCk7CiAKICAg
ICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVybkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVy
bkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrIH07CiAgICAgcmV0dXJuIENHUGF0dGVy
bkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAs
IHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nLCBUUlVFLCAmcGF0dGVybkNh
bGxiYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QbGF0Zm9ybUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGxhdGZvcm1JbWFnZUNHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmIyZGUwZWExMmRhMjE0ZjEwNDZj
Mzk2MmU4ZWFiNTNjNjQ0MTI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcApAQCAtMCwwICsxLDE3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKKyNpZiBVU0UoQ0cpCisKKyNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgorI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU3Vi
aW1hZ2VDYWNoZVdpdGhUaW1lci5oIgorCisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPFdl
YktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit2b2lkIFBsYXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1h
Z2VzKCkKK3sKKyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAgICBpZiAoIWlzTmlsKCkpCisgICAgICAg
IHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKGNnSW1hZ2VSZWYoKSk7CisjZW5kaWYKK30KKwor
SW50U2l6ZSBQbGF0Zm9ybUltYWdlOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOaWwo
KSA/IEludFNpemUoKSA6IEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2VSZWYoKSksIENH
SW1hZ2VHZXRIZWlnaHQoY2dJbWFnZVJlZigpKSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6
aGFzQWxwaGEoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBBbnN3ZXIgY29ycmVjdGx5IHRoZSBx
dWVzdGlvbjogZG9lcyB0aGUgQ0dJbWFnZVJlZiBoYXZlIGFscGhhIGNoYW5ubmVsPworICAgIHJl
dHVybiB0cnVlOworfQorCitDb2xvciBQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29s
b3IoKSBjb25zdAoreworICAgIGlmIChpc05pbCgpIHx8IHNpemUoKSAhPSBJbnRTaXplKDEsIDEp
KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIHBpeGVs
WzRdOyAvLyBSR0JBCisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNl
UmVmKCksCisgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1h
cEJ5dGVPcmRlcjMyQmlnKSk7CisgICAgCisgICAgaWYgKCFiaXRtYXBDb250ZXh0KQorICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoYml0bWFw
Q29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdl
KGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGNnSW1hZ2VSZWYo
KSk7CisgICAgCisgICAgaWYgKCFwaXhlbFszXSkKKyAgICAgICAgcmV0dXJuIENvbG9yKDAsIDAs
IDAsIDApOworICAgIAorICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNd
LCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFszXSk7Cit9CisgICAgCitib29sIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xv
cigpIGNvbnN0Cit7CisgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGNnSW1hZ2VSZWYoKTsKKyAgICBB
U1NFUlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOworICAgIAorICAg
IENHQml0bWFwSW5mbyBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7Cisg
ICAgaWYgKCEoaW1hZ2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFn
ZUluZm8gJiBrQ0dCaXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0KSB7CisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhh
bmRsZSBvdGhlciBwaXhlbCBmb3JtYXRzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBzaXplX3Qgd2lkdGggPSBD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVp
Z2h0KGltYWdlKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJS
b3coaW1hZ2UpOworICAgIAorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRv
cHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2Up
KSk7CisgICAgY29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdl
dCgpKTsKKyAgICAKKyAgICAvLyBPdmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRv
cCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGlu
dGVyaW9yIHBvaW50cywgY2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9u
ZyB0aGUgc2FtcGxlIHBvaW50CisgICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2Fs
ZWQgYnkgdHJhbnNwYXJlbmN5LgorICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3Owor
ICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3OworICAgIC8vIEZJWE1FOiBSZWZpbmUg
dGhlIHByb3BlciBudW1iZXIgb2Ygc2FtcGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBh
c3BlY3QgcmF0aW9zLgorICAgIGlmICh3aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2Ft
cGxlUm93cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIEVuc3VyZSB0aGF0
IHRoZSBsYXN0IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgorICAgIGNv
bnN0IGZsb2F0IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAo
c2FtcGxlQ29scyAtIDEpOworICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19j
YXN0PGZsb2F0PihoZWlnaHQgLSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7CisgICAgZmxvYXQgc2Ft
cGxlc1tzYW1wbGVSb3dzXVtzYW1wbGVDb2xzXTsKKyAgICAKKyAgICAvLyBGaW5kIHRoZSBsdW1p
bmFuY2Ugb2YgdGhlIHNhbXBsZSBwb2ludHMuCisgICAgZmxvYXQgeSA9IDA7CisgICAgY29uc3Qg
VUludDgqIHJvdyA9IGRhdGE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJv
d3M7ICsraSkgeworICAgICAgICBmbG9hdCB4ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IHNhbXBsZUNvbHM7ICsraikgeworICAgICAgICAgICAgY29uc3QgVUludDgqIHAw
ID0gcm93ICsgKHN0YXRpY19jYXN0PGludD4oeCArIC41KSkgKiA0OworICAgICAgICAgICAgLy8g
UiBHIEIgQQorICAgICAgICAgICAgc2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcx
NTQgKiAqKHAwKzEpICsgMC4wNzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OworICAgICAg
ICAgICAgeCArPSBzdHJpZGVXaWR0aDsKKyAgICAgICAgfQorICAgICAgICB5ICs9IHN0cmlkZUhl
aWdodDsKKyAgICAgICAgcm93ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICog
Ynl0ZXNQZXJSb3c7CisgICAgfQorICAgIAorICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2Nv
cmUuCisgICAgZmxvYXQgYWNjdW1TY29yZSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsg
aSA8IHNhbXBsZVJvd3MgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsg
aiA8IHNhbXBsZUNvbHMgLSAxOyArK2opIHsKKyAgICAgICAgICAgIGZsb2F0IGRpZmYgPSBzYW1w
bGVzW2kgLSAxXVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBz
YW1wbGVzW2ldW2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOworICAgICAgICAgICAgYWNjdW1T
Y29yZSArPSBkaWZmICogZGlmZjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBUaGUg
c2NvcmUgZm9yIGEgZ2l2ZW4gc2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5k
IDI1NV4yLgorICAgIHJldHVybiBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikg
KiAoc2FtcGxlQ29scyAtIDIpOworfQorCitmbG9hdCBQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGlu
Z1NjYWxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1w
bGVkIGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBERiBjb250ZXh0cy4KKyAgICBpZiAod2tDR0Nv
bnRleHRJc1BERkNvbnRleHQoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgICAgIHJl
dHVybiAxOworICAgIAorICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENH
UmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSkpOworICAgIHJldHVybiBzdGQ6Om1pbjxmbG9hdD4oMSwgc3Rk
OjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lk
dGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0Lmhl
aWdodCgpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikgY29uc3QKK3sK
KyAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNt
YWxsZXIgdGhhbiBzaXplKCkuCisgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gc2l6
ZSgpOworICAgIAorICAgIC8vIHNyY1JlY3QgaXMgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1
bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8gbWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVk
IGltYWdlLgorICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OworICAgIGlm
IChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCisgICAgICAgIGFkanVzdGVkU3JjUmVj
dCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7
IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKKyAgICAKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShtX2ltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBvcCwgbW9kZSwgb3JpZW50YXRpb24pOworfQorICAgIAorfQorCisjZW5kaWYgLy8gVVNF
KENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggODk3
MjBkMTczNjVkYTdlOGJhODQ2OWQ1Mjk0NTQ4ZDUxODQ3YTdmZS4uNDQ3NmZjNWY4N2MzNDk4OGY2
ZDlhZDU1ZWViZDhkMWI5YmIwMjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hLm1tCkBAIC0xMjksNyArMTI5LDcgQEAgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYTo6flRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoKQogdm9pZCBUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbkNvY29hOjp1cGRhdGUoKQogewogICAgIGlmIChhdXRvIHJlcHJlc2VudGF0aW9u
ID0gbV9jbGllbnQuY3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb25JbWFnZSgpKQotICAgICAg
ICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50czooaWQpcmVwcmVzZW50YXRpb24tPmdldENHSW1h
Z2VSZWYoKV07CisgICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNl
bnRhdGlvbi0+bmF0aXZlSW1hZ2UoKS5nZXQoKV07CiB9CiAKIHZvaWQgVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYTo6c2V0Q29udGVudFNjYWxlKGZsb2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW1hZ2VGcmFtZURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW1hZ2VGcmFtZURhdGEuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM1MmZkY2VjZTYzMjcxYWFmYzliNmM4ZTUzM2NkOWUzMGU3NDA4YzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZyYW1lRGF0YS5j
cHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRh
LmgiCisKKyNpbmNsdWRlICJDb2xvci5oIgorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkltYWdl
RGVjb2RlckNHLmgiCisjZWxzZQorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorI2VuZGlmCisK
KyNpbmNsdWRlICJQbGF0Zm9ybUltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
K0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YSgpCit7Cit9CisKK0ltYWdlRnJhbWVEYXRh
OjpJbWFnZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmIGltYWdlKQorICAgIDogbV9zdGF0dXMo
U3RhdHVzOjpDb21wbGV0ZSkKKyAgICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCit7CisgICAg
bV9zaXplID0gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5zaXplKCk7CisgICAgbV9oYXNBbHBoYSA9
IFBsYXRmb3JtSW1hZ2UobV9pbWFnZSkuaGFzQWxwaGEoKTsKK30KKworSW1hZ2VGcmFtZURhdGE6
OkltYWdlRnJhbWVEYXRhKEltYWdlRGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hpbmcgZnJhbWVDYWNoaW5nKQorewor
ICAgIEFTU0VSVChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOworICAgIAorICAgIGlmIChmcmFtZUNh
Y2hpbmcgPT0gQ2FjaGluZzo6SW1hZ2UgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UpIHsKKyAgICAgICAgbV9pbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX3N1YnNhbXBsaW5n
TGV2ZWwgPSBzdWJzYW1wbGluZ0xldmVsOworICAgIH0KKyAgICAKKyAgICBpZiAoZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6Ok1ldGFkYXRhIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRh
ZGF0YUFuZEltYWdlKSB7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVudGF0
aW9uQXRJbmRleChpbmRleCk7CisgICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlzQ29t
cGxldGVBdEluZGV4KGluZGV4KSA/IFN0YXR1czo6Q29tcGxldGUgOiBTdGF0dXM6OlBhcnRpYWw7
CisgICAgICAgIAorICAgICAgICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBjQW5p
bWF0aW9uTm9uZSkKKyAgICAgICAgICAgIG1fZHVyYXRpb24gPSBkZWNvZGVyLmZyYW1lRHVyYXRp
b25BdEluZGV4KGluZGV4KTsKKyAgICAgICAgCisgICAgICAgIG1faGFzQWxwaGEgPSBkZWNvZGVy
LmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICAgICAgbV9zaXplID0gZGVjb2Rlci5m
cmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICB9Cit9CisKK0lt
YWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEoKQoreworICAgIGNsZWFyU3ViSW1hZ2VzKCk7
Cit9CisKK3ZvaWQgSW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1hZ2VzKCkKK3sKKyAgICBpZiAo
IW1faW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBQbGF0Zm9ybUltYWdlKG1faW1h
Z2UpLmNsZWFyU3ViSW1hZ2VzKCk7Cit9CisKK3Vuc2lnbmVkIEltYWdlRnJhbWVEYXRhOjpjbGVh
cihDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAgICBBU1NFUlQoZnJhbWVDYWNoaW5nID09IENh
Y2hpbmc6Ok5vbmUgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhKTsKKyAgICAK
KyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gdGhpcy0+ZnJhbWVCeXRlcygpOworICAgIAorICAg
IGNsZWFyU3ViSW1hZ2VzKCk7CisgICAgCisgICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5n
OjpOb25lKQorICAgICAgICAqdGhpcyA9IEltYWdlRnJhbWVEYXRhKCk7CisgICAgZWxzZQorICAg
ICAgICBtX2ltYWdlID0gbnVsbHB0cjsKKyAgICAKKyAgICByZXR1cm4gZnJhbWVCeXRlczsKK30K
KworQ29sb3IgSW1hZ2VGcmFtZURhdGE6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0Cit7
CisgICAgaWYgKCFoYXNJbWFnZSgpIHx8IG1fc2l6ZSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAg
ICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZvcm1JbWFnZShtX2ltYWdl
KS5zaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKK30KKworYm9vbCBJbWFnZUZyYW1lRGF0YTo6aXNB
bG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5p
c0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ltYWdlRnJhbWVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZyYW1lRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3MjlkY2JhNGE2
MDRlNjUwZGJlMjlhZjg1ODIyMGZhZDgzNzY0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZyYW1lRGF0YS5oCkBAIC0wLDAgKzEsODgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW50U2l6
ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KyAgICAKK2NsYXNzIENvbG9yOworY2xhc3MgSW1hZ2VEZWNvZGVyOworCisvLyBTdWJzYW1wbGlu
Z0xldmVsLiAwIGlzIG5vIHN1YnNhbXBsaW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNo
IGF4aXMgZXRjLgordXNpbmcgU3Vic2FtcGxpbmdMZXZlbCA9IHVpbnQ4X3Q7CisKK2VudW0gOiBT
dWJzYW1wbGluZ0xldmVsIHsKKyAgICBNaW5TdWJzYW1wbGluZ0xldmVsID0gMCwKKyAgICBNYXhT
dWJzYW1wbGluZ0xldmVsID0gMywKKyAgICBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCA9IE1pblN1
YnNhbXBsaW5nTGV2ZWwKK307CisKK2NsYXNzIEltYWdlRnJhbWVEYXRhIHsKK3B1YmxpYzoKKyAg
ICBlbnVtIGNsYXNzIENhY2hpbmcgeyBOb25lLCBNZXRhZGF0YSwgSW1hZ2UsIE1ldGFkYXRhQW5k
SW1hZ2UgfTsKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7IEVtcHR5LCBQYXJ0aWFsLCBDb21wbGV0
ZSB9OworICAgIAorICAgIEltYWdlRnJhbWVEYXRhKCk7CisgICAgSW1hZ2VGcmFtZURhdGEoTmF0
aXZlSW1hZ2VQdHImJik7CisgICAgSW1hZ2VGcmFtZURhdGEoSW1hZ2VEZWNvZGVyJiwgc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwsIENhY2hp
bmcgPSBDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKTsKKyAgICAKKyAgICB+SW1hZ2VGcmFtZURh
dGEoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjbGVhcihDYWNoaW5nKTsKKyAgICBDb2xvciBzaW5n
bGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdDsKKyAgICBib29sIGlzQWxtb3N0U29saWRDb2xvcigp
IGNvbnN0OworICAgIAorICAgIFN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1
czsgfQorICAgIGJvb2wgaXNDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0
YXR1czo6Q29tcGxldGU7IH0KKyAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzSW1hZ2Uo
KSA/IG1fc2l6ZS5hcmVhKCkgKiA0IDogMDsgfQorICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIAorICAgIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgU3Vic2FtcGxp
bmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1wbGluZ0xl
dmVsOyB9CisgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9
CisgICAgCisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWxwaGE7IH0K
KyAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIGJvb2wg
aGFzTWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiAhbV9zaXplLmlzRW1wdHkoKTsgfQorICAgIAor
cHJpdmF0ZToKKyAgICB2b2lkIGNsZWFyU3ViSW1hZ2VzKCk7CisgICAgCisgICAgU3RhdHVzIG1f
c3RhdHVzIHsgU3RhdHVzOjpFbXB0eSB9OworICAgIEludFNpemUgbV9zaXplOworICAgIE5hdGl2
ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0
aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1f
c3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9OworICAg
IGJvb2wgbV9oYXNBbHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggMDFlYjZkZDMwMDQz
YTIyNTI5MTc2ZmQ5MTIxMTdkYzU3NzZjMTdiYS4uZGMxYzdjNzA5NWQ5NDRjNGM2MmYxZmUwOTM1
NzAyYTEzYzdjN2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbQpAQCAtODUsMzEgKzg1LDIyIEBAIENGRGF0YVJlZiBCaXRtYXBJbWFn
ZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkKICAgICBpZiAobV90aWZmUmVwKQogICAgICAgICBy
ZXR1cm4gbV90aWZmUmVwLmdldCgpOwogCi0gICAgdW5zaWduZWQgbnVtRnJhbWVzID0gZnJhbWVD
b3VudCgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2VzID0gdGhpcy0+ZnJhbWVzTmF0aXZlSW1hZ2Vz
KCk7CiAKLSAgICAvLyBJZiBudW1GcmFtZXMgaXMgemVybywgd2Uga25vdyBmb3IgY2VydGFpbiB0
aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2YWxpZCBkYXRhCisgICAgLy8gSWYgZnJhbWVzSW1hZ2Vz
LnNpemUoKSBpcyB6ZXJvLCB3ZSBrbm93IGZvciBjZXJ0YWluIHRoaXMgaW1hZ2UgZG9lc24ndCBo
YXZlIHZhbGlkIGRhdGEKICAgICAvLyBFdmVuIHRob3VnaCB0aGUgY2FsbCB0byBDR0ltYWdlRGVz
dGluYXRpb25DcmVhdGVXaXRoRGF0YSB3aWxsIGZhaWwgYW5kIHdlJ2xsIGhhbmRsZSBpdCBncmFj
ZWZ1bGx5LAogICAgIC8vIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB0aGF0IGNhbGwgd2lsbCBz
cGFtIHRoZSBjb25zb2xlIHdpdGggYW4gZXJyb3IgbWVzc2FnZQotICAgIGlmICghbnVtRnJhbWVz
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFZlY3RvcjxDR0ltYWdlUmVmPiBpbWFnZXM7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZyYW1lczsgKytpICkgewotICAgICAgICBD
R0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5nZXQoKTsKLSAgICAgICAg
aWYgKGNnSW1hZ2UpCi0gICAgICAgICAgICBpbWFnZXMuYXBwZW5kKGNnSW1hZ2UpOwotICAgIH0K
LQotICAgIHVuc2lnbmVkIG51bVZhbGlkRnJhbWVzID0gaW1hZ2VzLnNpemUoKTsKKyAgICBpZiAo
IW5hdGl2ZUltYWdlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmV0
YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFi
bGUoMCwgMCkpOwotICAgIFJldGFpblB0cjxDR0ltYWdlRGVzdGluYXRpb25SZWY+IGRlc3RpbmF0
aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YShkYXRhLmdldCgp
LCBrVVRUeXBlVElGRiwgbnVtVmFsaWRGcmFtZXMsIDApKTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFn
ZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9u
Q3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VUVHlwZVRJRkYsIG5hdGl2ZUltYWdlcy5zaXpl
KCksIDApKTsKIAogICAgIGlmICghZGVzdGluYXRpb24pCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1W
YWxpZEZyYW1lczsgKytpKQotICAgICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0
aW5hdGlvbi5nZXQoKSwgaW1hZ2VzW2ldLCAwKTsKKyAgICBmb3IgKGF1dG8gbmF0aXZlSW1hZ2Ug
OiBuYXRpdmVJbWFnZXMpCisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3Rp
bmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7CiAKICAgICBDR0ltYWdlRGVzdGlu
YXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5tbQppbmRleCAyMTZjZDA5M2YyNjQ2N2NiYTg4YTQzZjY5M2FiZjRj
ZjUxZGQxYTRkLi5kMTE0NTRiMDVlZjg4OTkzYTYyODkzODk2YmMwYzExNzI4YzVlZDUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC04Nyw3ICs4Nyw3IEBA
IHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBsYXRmb3JtTGF5ZXIoKSBj
b25zdAogICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
bV9wcmV2aWV3SW1hZ2UgPSBpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpOworICAgICAgICBtX3ByZXZp
ZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwogICAgICAgICBpZiAoIW1fcHJldmlld0lt
YWdlKQogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDM2Y2Q2NTE2ZTgwZjE3NDhiZmVhYjc3YTkzMDI3
MWMxMjFkZTgwMTkuLjRiNGUzNzc5ZTk2Zjc4YzY1NDBhNTNjNDQ3OGMzYmZkOTM1ZjUzZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcApAQCAt
MTM2LDkgKzEzNiw5IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1h
Z2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogICAgIENHQ29udGV4dFNjYWxl
Q1RNKGRyYXdDb250ZXh0LCAxLCAtMSk7CiAgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yKGRyYXdD
b250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoZHJhd0NvbnRleHQsIHJlY3Qp
OwotICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5nZXRDR0ltYWdlUmVmKCkpIHsKKyAgICBp
ZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+bmF0aXZlSW1hZ2UoKSkgewogICAgICAgICBDR0NvbnRl
eHRTZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5vcm1hbCk7Ci0gICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UpOworICAgICAg
ICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHNyY0ltYWdlLmdldCgpKTsK
ICAgICB9CiAgICAgQ0dDb250ZXh0UmVsZWFzZShkcmF3Q29udGV4dCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYkNhY2hlLm1tCmluZGV4IGI2NTlkNmRiZjlhZDY5OTljM2FjOTYyZGU5NTE1NzgwOTdl
MWYzYjEuLjdjNWVkMjEwZGRiMmEzMmE3NjY2NzRjMTIwZDk5NGMyZmE0N2U3ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJDYWNoZS5tbQpAQCAtMjA0LDcgKzIwNCw3IEBAICsgKENHSW1hZ2VSZWYp
aW1hZ2VGb3JVUkw6KE5TVVJMICopdXJsCiAgICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UmIGNhY2hl
ZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpjYWNoZWRSZXNvdXJjZSk7
CiAgICAgaWYgKCFjYWNoZWRJbWFnZS5oYXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigpOworICAg
IHJldHVybiBjYWNoZWRJbWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgpOwogfQogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCmluZGV4IDBmNmRlN2ExNDZhNjExYTUy
YWExZTUzOTAxOWZhNmMxYzQ2NzI1YWUuLjMwNTYzMzZjYjY2ZmU0YWYxOGJkYzUyOWFjYTJmOGZj
ODgxZGZlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9X
S0ljb25EYXRhYmFzZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
Y2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKQEAgLTM3LDEyICszNywyMyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIENHSW1hZ2VSZWYgV0tJY29uRGF0YWJhc2VUcnlHZXRDR0ltYWdlRm9yVVJM
KFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1Np
emUgc2l6ZSkKIHsKICAgICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNvbkRhdGFiYXNlUmVmKS0+
aW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAgIHJldHVybiBpbWFnZSA/
IGltYWdlLT5nZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoSW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+
KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KSkpIDogMDsKKyAgICBy
ZXR1cm4gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VPZlNpemUoSW50U2l6ZShzdGF0aWNfY2Fz
dDxpbnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0KSkpLmdldCgp
IDogbnVsbHB0cjsKIH0KIAogQ0ZBcnJheVJlZiBXS0ljb25EYXRhYmFzZVRyeUNvcHlDR0ltYWdl
QXJyYXlGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiB1
cmxSZWYpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gdG9JbXBsKGljb25EYXRhYmFzZVJlZiktPmlt
YWdlRm9yUGFnZVVSTCh0b1dURlN0cmluZyh1cmxSZWYpKTsKLSAgICByZXR1cm4gaW1hZ2UgPyBp
bWFnZS0+Z2V0Q0dJbWFnZUFycmF5KCkubGVha1JlZigpIDogMDsKKyAgICBpZiAoIWltYWdlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2VzID0gaW1hZ2Ut
PmZyYW1lc05hdGl2ZUltYWdlcygpOworICAgIGlmICghbmF0aXZlSW1hZ2VzLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgQ0ZNdXRhYmxlQXJyYXlSZWYgYXJyYXkg
PSBDRkFycmF5Q3JlYXRlTXV0YWJsZShudWxscHRyLCBuYXRpdmVJbWFnZXMuc2l6ZSgpLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKTsKKyAgICBmb3IgKGF1dG8gbmF0aXZlSW1hZ2UgOiBuYXRpdmVJ
bWFnZXMpCisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwgbmF0aXZlSW1hZ2UuZ2V0
KCkpOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRkFycmF5UmVmPihDRlJldGFpbihh
cnJheSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDYyNjBkZTQ2MTFhOGVhZGE1Y2MxNTI5
YzEzM2M3NTFjNjgwNjNmYzUuLmM1ZTM1NzJhNDc2NDdkYzJiNmIwMDIzMmU1ZDk1NzYxZWJiMDZk
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC00MDc4LDcgKzQwNzgsNyBAQCAtIChVSUltYWdlICop
X3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJ
dGVtQ29udHJvbAogewogICAgIGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRv
ci5jb250ZW50SW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBbW1tV
SUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0lu
ZGljYXRvci5jb250ZW50SW1hZ2UtPmdldENHSW1hZ2VSZWYoKV0gYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6X3Bvc2l0aW9uSW5mb3Jt
YXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUltYWdlKCkuZ2V0KCldIGF1
dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKV9wcmVzZW50YXRpb25SZWN0c0ZvclByZXZp
ZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIgKiljb250cm9sbGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggOWEzM2Y3Y2M3ZGM3YzdkNzJmOWRhNzQzMDk4YjdkYmNhODI0MDljZi4uYTUzMjUxMDY3OGI5
ZjUzNTE0NThhMzhhOWY0MjMzNzQ3ZDAzNWY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTcyNyw2OSArMTcyNyw2IEBAIHZv
aWQgUGx1Z2luVmlldzo6d2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wgaXNW
aXNpYmxlLCB1aW50NjRfdCB3aW5kCiB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQot
c3RhdGljIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKEJpdG1hcEltYWdlKiBiaXRtYXApCi17Ci0g
ICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1hcC0+Z2V0Q0dJbWFnZVJlZigpOwotICAgIEFTU0VS
VChDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChpbWFnZSkgPT0gOCk7Ci0KLSAgICBDR0JpdG1h
cEluZm8gaW1hZ2VJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1hZ2UpOwotICAgIGlmICgh
KGltYWdlSW5mbyAmIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlKSB8fCAoaW1hZ2VJbmZvICYg
a0NHQml0bWFwQWxwaGFJbmZvTWFzaykgIT0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJz
dCkgewotICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgYmVpbmcgYWJsZSB0byBoYW5kbGUgb3Ro
ZXIgcGl4ZWwgZm9ybWF0cy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lk
dGgoaW1hZ2UpOwotICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsK
LSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UpOwot
Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3Zp
ZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihpbWFnZSkpKTsKLSAgICBjb25zdCBV
SW50OCogZGF0YSA9IENGRGF0YUdldEJ5dGVQdHIocHJvdmlkZXIuZ2V0KCkpOwotCi0gICAgLy8g
T3ZlcmxheSBhIGdyaWQgb2Ygc2FtcGxpbmcgZG90cyBvbiB0b3Agb2YgYSBncmF5c2NhbGUgdmVy
c2lvbiBvZiB0aGUgaW1hZ2UuCi0gICAgLy8gRm9yIHRoZSBpbnRlcmlvciBwb2ludHMsIGNhbGN1
bGF0ZSB0aGUgZGlmZmVyZW5jZSBpbiBsdW1pbmFuY2UgYW1vbmcgdGhlIHNhbXBsZSBwb2ludAot
ICAgIC8vIGFuZCBpdHMgc3Vycm91bmRzIHBvaW50cywgc2NhbGVkIGJ5IHRyYW5zcGFyZW5jeS4K
LSAgICBjb25zdCB1bnNpZ25lZCBzYW1wbGVSb3dzID0gNzsKLSAgICBjb25zdCB1bnNpZ25lZCBz
YW1wbGVDb2xzID0gNzsKLSAgICAvLyBGSVhNRTogUmVmaW5lIHRoZSBwcm9wZXIgbnVtYmVyIG9m
IHNhbXBsZXMsIGFuZCBhY2NvbW1vZGF0ZSBkaWZmZXJlbnQgYXNwZWN0IHJhdGlvcy4KLSAgICBp
ZiAod2lkdGggPCBzYW1wbGVDb2xzIHx8IGhlaWdodCA8IHNhbXBsZVJvd3MpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0IHJvdy9jb2x1bW4gbGFu
ZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgotICAgIGNvbnN0IGZsb2F0IHN0cmlkZVdpZHRoID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29scyAtIDEpOwotICAgIGNv
bnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0PihoZWlnaHQgLSAxKSAv
IChzYW1wbGVSb3dzIC0gMSk7Ci0gICAgZmxvYXQgc2FtcGxlc1tzYW1wbGVSb3dzXVtzYW1wbGVD
b2xzXTsKLQotICAgIC8vIEZpbmQgdGhlIGx1bWluYW5jZSBvZiB0aGUgc2FtcGxlIHBvaW50cy4K
LSAgICBmbG9hdCB5ID0gMDsKLSAgICBjb25zdCBVSW50OCogcm93ID0gZGF0YTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2FtcGxlUm93czsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHgg
PSAwOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc2FtcGxlQ29sczsgKytqKSB7
Ci0gICAgICAgICAgICBjb25zdCBVSW50OCogcDAgPSByb3cgKyAoc3RhdGljX2Nhc3Q8aW50Pih4
ICsgLjUpKSAqIDQ7Ci0gICAgICAgICAgICAvLyBSIEcgQiBBCi0gICAgICAgICAgICBzYW1wbGVz
W2ldW2pdID0gKDAuMjEyNSAqICpwMCArIDAuNzE1NCAqICoocDArMSkgKyAwLjA3MjEgKiAqKHAw
KzIpKSAqICoocDArMykgLyAyNTU7Ci0gICAgICAgICAgICB4ICs9IHN0cmlkZVdpZHRoOwotICAg
ICAgICB9Ci0gICAgICAgIHkgKz0gc3RyaWRlSGVpZ2h0OwotICAgICAgICByb3cgPSBkYXRhICsg
KHN0YXRpY19jYXN0PGludD4oeSArIC41KSkgKiBieXRlc1BlclJvdzsKLSAgICB9Ci0KLSAgICAv
LyBEZXRlcm1pbmUgdGhlIGltYWdlIHNjb3JlLgotICAgIGZsb2F0IGFjY3VtU2NvcmUgPSAwOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBzYW1wbGVSb3dzIC0gMTsgKytpKSB7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDE7IGogPCBzYW1wbGVDb2xzIC0gMTsgKytqKSB7Ci0gICAg
ICAgICAgICBmbG9hdCBkaWZmID0gc2FtcGxlc1tpIC0gMV1bal0gKyBzYW1wbGVzW2kgKyAxXVtq
XSArIHNhbXBsZXNbaV1baiAtIDFdICsgc2FtcGxlc1tpXVtqICsgMV0gLSA0ICogc2FtcGxlc1tp
XVtqXTsKLSAgICAgICAgICAgIGFjY3VtU2NvcmUgKz0gZGlmZiAqIGRpZmY7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBUaGUgc2NvcmUgZm9yIGEgZ2l2ZW4gc2FtcGxlIGNhbiBiZSB3aXRo
aW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgotICAgIHJldHVybiBhY2N1bVNjb3JlIDwgMjUw
MCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxlQ29scyAtIDIpOwotfQotI2VuZGlmCi0KIHZv
aWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmVkKCkKIHsKICNpZiBFTkFCTEUo
UFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQpAQCAtMTgwOSw3ICsxNzQ2LDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoKQogCiAgICAgICAg
IGlmIChzbmFwc2hvdEltYWdlKSB7CiAjaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExV
R0lOX0hFVVJJU1RJQykKLSAgICAgICAgICAgIGJvb2wgc25hcHNob3RJc0FsbW9zdFNvbGlkQ29s
b3IgPSBpc0FsbW9zdFNvbGlkQ29sb3IoZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KHNuYXBzaG90SW1h
Z2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIGJvb2wgc25hcHNob3RJc0FsbW9zdFNvbGlkQ29sb3Ig
PSBzdGF0aWNfcG9pbnRlcl9jYXN0PEJpdG1hcEltYWdlPihzbmFwc2hvdEltYWdlKS0+aXNBbG1v
c3RTb2xpZENvbG9yKCk7CiAgICAgICAgICAgICBzbmFwc2hvdEZvdW5kID0gIXNuYXBzaG90SXNB
bG1vc3RTb2xpZENvbG9yOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282736</attachid>
            <date>2016-07-04 16:48:07 -0700</date>
            <delta_ts>2016-07-04 17:12:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160704164750.patch</filename>
            <type>text/plain</type>
            <size>98082</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTUyOGVmNTIxY2FiOGVm
YmI5NDc1YjQxYzg1Njc0MWE0ZWE2NDE5My4uNmIxNDlhZTUxZWRjNGVkZWM2ODdmZWZkMjJiOTEz
NGU1N2U3ZjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxNi0wNi0yNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIFJlbmFt
ZSBGcmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IEltYWdlRnJhbWVEYXRhIHRvIGEgc2VwYXJhdGUgZmlsZSBzbyBpdCBjYW4gYmUgY2FjaGVkIGJ5
IEltYWdlU291cmNlCisgICAgICAgIGFuZCB3aWxsIHN0aWxsIGJlIGNvbnN1bWVkIGJ5IEJpdG1h
cEltYWdlLiBNYWtlIHRoZSBkYXRhIG1lbWJlcnMgb2YgSW1hZ2VGcmFtZURhdGEKKyAgICAgICAg
YmUgcHJpdmF0ZSBhbmQgYWRkIGdldHRlcnMgdG8gcmV0dXJuIHRoZWlyIHZhbHVlcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdl
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpm
cmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJh
bWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNp
bmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNB
bG1vc3RTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6dXNlZEZyYW1lQnl0ZXMpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZURhdGFBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lt
YWdlRnJhbWVEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6On5J
bWFnZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xlYXJT
dWJJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmlzQWxtb3N0U29saWRDb2xvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW1hZ2VGcmFtZURhdGEuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWVEYXRhOjppc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpmcmFtZUJ5
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OnN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZURhdGE6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aGFzSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc01ldGFkYXRhKToKKwor
MjAxNi0wNi0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgor
CisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBl
ciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyByZWZhY3RvcmluZyBpcyB0byBt
b3ZlIHRoZSBwbGF0Zm9ybSBpbWFnZSBkZXBlbmRlbnQKKyAgICAgICAgY29kZSBmcm9tIEJpdG1h
cEltYWdlIHRvIFBsYXRmb3JtSW1hZ2UuIFBsYXRmb3JtSW1hZ2UgaXMgcmVzcG9uc2libGUgb2Yg
CisgICAgICAgIGRyYXdpbmcgdGhlIGltYWdlIGFuZCBhbnN3ZXJpbmcgTmF0aXZlSW1hZ2VQdHIg
cXVlc3Rpb25zIHdoZW4gYW4gSW1hZ2VEZWNvZGVyCisgICAgICAgIGlzIG5vdCBhdmFpbGFibGUu
IEFwYXJ0IGZyb20gZHJhd2luZyB0aGUgaW1hZ2UsIHRoZSBxdWVyeSBmdW5jdGlvbnMgd2lsbCBi
ZQorICAgICAgICBjYWxsZWQgb25seSB3aGVuIGNvbnN0cnVjdGluZyBhIEZyYW1lRGF0YSBzbyB3
ZSB3aWxsIGtlZXAgZXZlcnl0aGluZyBhcyBhCisgICAgICAgIE5hdGl2ZUltYWdlUHRyLiBCdXQg
d2Ugd2lsbCBjYXN0IHRoZSBOYXRpdmVJbWFnZVB0ciB0byBQbGF0Zm9ybUltYWdlIHdoZW4KKyAg
ICAgICAgYSBwbGF0Zm9ybSBkZXBlbmRlbnQgZnVuY3Rpb24gaXMgbmVlZGVkLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAtLSBDb2RlIHJlZmFjdG9yaW5nLCBubyBiZWhhdmlvciBjaGFuZ2UuCisK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
TWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NLm1tOgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFu
ZFJlY3RzOl0pOgorICAgICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06Cisg
ICAgICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGljYXRv
cjptYXJnaW46b2Zmc2V0Ol0pOgorICAgICAgICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1h
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJ
bWFnZU9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lc05h
dGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2luZ2xlUGl4ZWxT
b2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppc0FsbW9zdFNvbGlk
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZURhdGE6OkZyYW1lRGF0YSk6CisgICAgICAgIG1faGFzQWxwaGEgY2FuIGJlIGluaXRpYWxpemVk
IHdpdGggZmFsc2UgYmVjYXVzZSBpdCBpcyBhY2Nlc3NlZCBvbmx5IGluCisgICAgICAgIEJpdG1h
cEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleCgpIGFuZCBpdCBpcyBndWFyZGVkIGJ5IG1faGF2
ZU1ldGFkYXRhLgorICAgICAgICBCb3RoIG1faGF2ZU1ldGFkYXRhIGFuZCBtX2hhc0FscGhhIGFy
ZSBzZXQgaW4gQml0bWFwSW1hZ2UgY29uc3RydWN0b3IKKyAgICAgICAgYW5kIGluIEJpdG1hcElt
YWdlOjpjYWNoZUZyYW1lKCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1l
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2
ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OlBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZTo6aXNOaWwpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2dJbWFnZVJl
Zik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TW9kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJT
dWJJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFw
SW1hZ2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpjbGVhclN1YkltYWdl
cyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlOjppc0FsbW9zdFNvbGlkQ29sb3IpOiBNb3ZlZCBmcm9tIFBsdWdpblZpZXcuY3Bw
IHNpbmNlIFBsYXRmb3JtSW1hZ2UgaXMgd2hhdCB0aGlzIGZ1bmN0aW9uIGJlbG9uZ3MgdG8uCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKTogUmV0dXJu
cyB0aGUgc3ViLXNhbXBsaW5nIHNjYWxlIGJhc2VkIG9uIHRoZSBjb250ZXh0IHNjYWxpbmcuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAg
ICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisKIDIwMTYtMDYtMjQgIEJldGggRGFraW4gIDxi
ZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEluY2x1ZGUgZW5jbG9zaW5nTGlzdFR5cGUgaW4g
RWRpdG9yU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0ZDc0NWVkY2EyMjIwYjMzMTEwODQ4NjAx
Yjk3MTBhMjJjMjQ5OWU3Li42ZWU1MmNmNjVhYTllY2UzMWVkOTA0ZWU5NDc5NWM4NjhmOTYxOGRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDYtMjQgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBJbnRyb2R1Y2Ug
UGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9yIE5hdGl2ZUltYWdlUHRy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2Mv
V2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorCiAyMDE2
LTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFBsYXli
YWNrIGNvbnRyb2xzIHJlZmVyIHRvIHdyb25nIGVsZW1lbnQgd2hlbiBwbGF5aW5nIG11bHRpcGxl
IGl0ZW1zIGluIGEgcGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiMzU0OTA3OTMyNmYzMmZmNGU3MGVkY2Ix
MDQyYjJmMWVlMjg2NDM0Li44NjRjNDIzNGQyYjcxNWUxOWMxM2ZhMTgzNmJkMzI5NDBjNTc2OWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDYtMjQgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgUGxhdGZv
cm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9yIE5hdGl2ZUltYWdlUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg2ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcDoKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5
R2V0Q0dJbWFnZUZvclVSTCk6CisgICAgICAgIChXS0ljb25EYXRhYmFzZVRyeUNvcHlDR0ltYWdl
QXJyYXlGb3JVUkwpOgorICAgICAgICBJdCB3YXMgdGhlIG9ubHkgcGxhY2UgaW4gdGhlIGNvZGUg
d2hpY2ggdXNlcyBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KCkuCisgICAgICAgIENhbGwg
Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcygpIGluc3RlYWQgYW5kIGZvcm0gdGhlIHJl
dHVybmVkCisgICAgICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gYnVpbGQgdGhlIENGQXJyYXlS
ZWYuCisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVzZW50YXRpb25TbmFwc2hv
dEZvclByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpblNu
YXBzaG90VGltZXJGaXJlZCk6CisgICAgICAgIAorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNv
bGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICBNb3ZlIHRoZSBzdGF0aWMgZnVuY3Rpb24gaXNB
bG1vc3RTb2xpZENvbG9yIHRvIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpLgor
CiAyMDE2LTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFZpbWVvLmNvbSB2aWRlb3MgZG8gbm90IGdldCBwbGF5YmFjayBjb250cm9scwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA3NDY4OTU5MWZkODY5ODMyYzE2NmU3YjljNWVmZGNlODE2ODZiZmFlLi41
MmQ4NjZkODExMzU3YzEyN2ZjNDQxMGUxM2Q3YTI3NDhjMjIzODZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjIzMCw2ICsyMjMwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0lTT1ZUVEN1ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9y
aWVudGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVX
aW4uY21ha2UKaW5kZXggNWZmOTkxZmY3ZGEzMDhiYjkxODJlY2UzYmYxMjE3MzBhNTQ4ZDI4Ny4u
YmFlMzFlYWY4NmU3ZmNhOTA1ODI1MDkyYWEzOGE3OGMxMWU0MjIwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC01NSw3ICs1NSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdM
YXllcldpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVy
VHJlZUhvc3QuY3BwCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0
UmVjdENHLmNwcApAQCAtNzUsNiArNzQsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCAzMjlhMTYwNzkxODk4NjEwM2M2MGUwYjYwZDQwY2VlMGVm
NmJjNjgxLi5jZGZkOWFhYmMwY2VkYTVlMzFmYzc3Yzg1MjI0ZmU0ODdkODRiOWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTIyLDcgKzEyMiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKIAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwu
Y3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKQEAgLTEzNCw2ICsxMzMsNyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8u
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9QbGF0Zm9ybVBhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UcmFu
c2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA3
NGU1MTk1YWIwOTQ5NzMyMGZkOWI2YjRlZjk2YjZmZjRlM2IyNDYyLi40OTBiZTQxMWJjNWIyMzJj
MmMwMTgzZWJiYzIxNjg4NTE3ODM1YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
OTgsNyArOTgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcApAQCAtMTEyLDYgKzExMSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0
ckNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0
cml4Q2Fpcm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNiZjgwZjVkYTdmZWQ5
MzU5NDhkZmRlYzc5MTI3Y2U2NTFkZTQ2ZTMuLjg2YjZiMzRhM2Y2NDhlN2MwZTE1YmVjOTVmY2Rh
MDMwN2ExZGEyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zOTUsNyArMzk1LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9CaXRtYXBJbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcApAQCAtNDE1LDYgKzQxNCw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
bGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJv
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQppbmRleCAyYzU1
M2IwNTUxZGFkNjlhYTE5OWQ5NjBmNTUyMzQzZDkyMGYwN2IzLi5jMjAzMDkxYTkzOWM2ZjdhMjJj
ZmJmODlmODJiMGMzMWVkOTJiYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVdpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21h
a2UKQEAgLTIxLDcgKzIxLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtRGlzcGxheS5jcHAKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdl
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMzQsNiArMzMsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRo
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybVBhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIwYzE2NWM1NTQ5MThjM2E0M2Ni
YmZhMDNhMjAwYTNlNGM5MTcwMjMuLjhlOTU3MDllNzUxOWMyZjVmYTliY2ZkMmU0Y2EzODdhNzA5
MjUwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE0ODEsNyArMTQ4MSw3IEBACiAJCTM3NUNEMjMyMTE5RDQzQzgwMEEyQTg1
OSAvKiBIeXBoZW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi87IH07
CiAJCTM3NkRDQ0UxMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVG
QyAvKiBUZXh0UnVuLmNwcCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92
ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVx
dWVzdENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNF
OUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLzsgfTsKKwkJMzc3QTNBOTAxNUVGQ0U5
QjAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZv
cm1JbWFnZUNHLmNwcCAqLzsgfTsKIAkJMzc5MTlDMjMwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0
aW9uSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICov
OyB9OwogCQkzNzkxOUMyNDBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MTlDMjIwQjdE
MTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9ICgpOyB9OyB9OwogCQkzNzkyOTE3QTE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlh
bEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzI4LDYgKzIzMjgsOSBAQAog
CQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1
M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVy
Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1
Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1
Qjg3RUQxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUg
LyogSW1hZ2VEZWNvZGVyQ0cuaCAqLzsgfTsKKwkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8q
IFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVDQkE2QTExRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFn
ZUZyYW1lRGF0YS5jcHAgKi87IH07CisJCTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFn
ZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTVDQkE2QTAxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcx
OTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVk
Q2xpY2suaCAqLzsgfTsKIAkJNTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENs
aWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MkE3RjIyMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4
MDM3MTYxMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyog
Q2xpcFJlY3QuY3BwICovOyB9OwpAQCAtOTA1Nyw3ICs5MDYwLDcgQEAKIAkJMzc2RENDRTAxM0I0
Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzJC
MDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNlcnZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRl
c3RSZXF1ZXN0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJs
YXBUZXN0UmVxdWVzdENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzNzdB
M0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRtYXBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VD
Ry5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUltYWdl
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMTBCN0QxODg2MDBB
NTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVk
ZW50aWFsQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFs
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk5Miw2ICs5OTk1LDkgQEAK
IAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdl
RGVjb2RlckNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rl
ckNHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1MUQwMjc0NDQwMEI5
RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8q
IEltYWdlRnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEltYWdlRnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2
QTAxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0
ZWRDbGljay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGlj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYx
NDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjIwMzEsNyArMjIwMzcsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3N0EzQThGMTVF
RkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5
NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0UmVjdENHLmNwcCAqLywKQEAgLTIyMDU4LDYgKzIyMDYzLDcgQEAKIAkJCQlBODBB
MzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBC
MDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1Mzcw
QjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkzNzdBM0E4RjE1
RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0MEZCODE2
NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZD
NDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJ
CQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAg
Ki8sCkBAIC0yMjIwOSw2ICsyMjIxNSw4IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5
IC8qIEltYWdlQnVmZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyog
SW1hZ2VCdWZmZXIuaCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VC
dWZmZXJEYXRhLmggKi8sCisJCQkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJh
bWVEYXRhLmNwcCAqLywKKwkJCQk1NUNCQTZBMDFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFt
ZURhdGEuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oICovLAogCQkJCUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9u
LmNwcCAqLywKIAkJCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlv
bi5oICovLApAQCAtMjIyNTgsNiArMjIyNjYsNyBAQAogCQkJCTJENTAwMkZBMUI1NkQ3OTkwMDIw
QUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggKi8sCiAJCQkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5
IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0
ZXJuLmggKi8sCisJCQkJNTU3NEYwODUxRDAyNzQ0NDAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2Uu
aCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICov
LAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0
VHJhY2suaCAqLywKQEAgLTI2MDE4LDYgKzI2MDI3LDcgQEAKIAkJCQk4NUU3MTFCOTBBQzVENTM1
MDA1MzI3MEYgLyogRE9NSFRNTE1hcEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM1MTU3OUYwQzAzQkJEMzAwOEJCMEVFIC8qIERPTUhUTUxNYXJxdWVlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1MTU2RUEwQzAzQjc0MTAwOEJCMEVFIC8qIERPTUhUTUxNYXJx
dWVlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTc0RjA4NzFEMDI3OTA5
MDBCOUYxNEMgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFQzY2NTUx
QzgyRDA0MTAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJERUM2NjUxMUM4MkQwMTYwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFFbGVtZW50SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QkE0RDEzMEFBNjg4NjgwMDg4MDUyRCAvKiBET01I
VE1MTWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0NTgsNiArMjY0NjgsNyBAQAog
CQkJCUQzNTlENzhBMTI5Q0EyNzEwMDA2RTVEMiAvKiBIVE1MRGV0YWlsc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4RUE3OUZBMEExOTE2REYwMEE4RUY1RiAvKiBIVE1MRGlyZWN0b3J5
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdDQjcwQTE5MkI5QzAwQThFRjVGIC8q
IEhUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUNCQTZBMjFEMURGMkUxMDA0
NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3OUY3MEEx
OTE2REYwMEE4RUY1RiAvKiBIVE1MRExpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0YxOThFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzdCMzg2NzEyMjg4M0U5MDBCODFGRjggLyogSFRNTERvY3VtZW50UGFyc2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NDEzLDcgKzI5NDI0LDcgQEAKIAkJCQlGREM1NEYwNDEzOTlCMERB
MDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMx
NjAyNjEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4OTk0MzI5MEI0MjMzODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZv
cm1JbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFG
NyAvKiBCbG9iLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFREVGMUYzMTIxQjBFRkMwMDcyNkRC
MiAvKiBCbG9iRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUQzMUNEQzE5MTk2MDIwMDAx
MDA1QTMgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3
NzUsNiArMjk3ODYsNyBAQAogCQkJCTJFMkQ5OUU4MTBFMkJDMUMwMDQ5NjMzNyAvKiBET01CbG9i
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlDRDgwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNE
QVRBU2VjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QUNBOTg3MEE5QjUyMDMwMDY3MUU5
MCAvKiBET01DaGFyYWN0ZXJEYXRhLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTVDQkE2QTExRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1
MDg5Q0RBMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTc4RDA3QkUxNDVBMEY2QzAwOTY5MDhEIC8qIERPTUNvcmVFeGNlcHRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODU4QzM4QTYwQUE4RjIwNDAwQjE4N0E0IC8qIERPTUNvdW50ZXIubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggNDAxMWVh
M2ZkOGMwNDY5NzRjNTVkNDhlMzk2ZjFiODNiODFmMzM1ZC4uYTVhYzRmMDVhZTMzOWE4ZDY0NzA2
YzEwZmMwZjdhZjQwNDI1NjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAg
LTYwNiw3ICs2MDYsNyBAQCAtICh2b2lkKWdldFByZXZpZXdTbmFwc2hvdEltYWdlOihDR0ltYWdl
UmVmKiljZ0ltYWdlIGFuZFJlY3RzOihOU0FycmF5ICoqKXJlY3RzCiAKICAgICBpZiAodGV4dElu
ZGljYXRvcikgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4dEluZGljYXRvci0+Y29u
dGVudEltYWdlKCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IChDR0ltYWdlUmVmKUNGQXV0b3Jl
bGVhc2UoQ0dJbWFnZVJldGFpbihpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpKSk7CisgICAgICAgICAg
ICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiByZWN0QXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCmluZGV4IDM2NGE5YTg3Y2U2ZjA2NjM5NDhiODg0NmU4ZTJj
ZTZkMTkwZjI0ODkuLmE3NGRhODVhY2VjYTNjNjY5OGRkMTU2YWIzMWE2Yzk3MWEzNTRlNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQpAQCAt
MTYyLDkgKzE2Miw5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJh
bWUgdGV4dEluZGljYXRvcjooUGFzc1JlZlB0cjxUZXh0SW5kaWNhCiAgICAgY29udGVudHNJbWFn
ZUxvZ2ljYWxTaXplLnNjYWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVG
YWN0b3IoKSk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CiAgICAg
aWYgKGluZGljYXRvcldhbnRzQ29udGVudENyb3NzZmFkZSgqX3RleHRJbmRpY2F0b3IpKQotICAg
ICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZVdpdGhIaWdo
bGlnaHQoKS0+Z2V0Q0dJbWFnZVJlZigpOworICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJ
bmRpY2F0b3ItPmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQoKS0+bmF0aXZlSW1hZ2UoKTsKICAg
ICBlbHNlCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudElt
YWdlKCktPmdldENHSW1hZ2VSZWYoKTsKKyAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5k
aWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKTsKIAogICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gYm91bmNlTGF5ZXJzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENBS2V5
ZnJhbWVBbmltYXRpb24+IGNyZWF0ZUJvdW5jZUFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJh
dAogc3RhdGljIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcmVhdGVDb250ZW50Q3Jvc3Nm
YWRlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uLCBUZXh0SW5kaWNhdG9yJiB0ZXh0
SW5kaWNhdG9yKQogewogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcm9zc2ZhZGVB
bmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAImNvbnRl
bnRzIl07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5k
aWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZTooaWQpY29u
dGVudHNJbWFnZS5nZXQoKV07CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRGaWxsTW9kZTpr
Q0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldFJlbW92ZWRP
bkNvbXBsZXRpb246Tk9dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCmluZGV4IDA2NzZjZTA3MjUwNzZiYjk1Y2NkMjZjNWMxYTUyOGQxNjNh
NDY1MmEuLmI5MmRlNjk1ODdmZjhmMDIxYmIxNzg3ZDEwZDZmNjBkOTkzMGVjZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTY4
LDE1ICs2OCwxMyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBp
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRy
dWUpCiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAoZmFsc2UpCiB7Cisg
ICAgbV9mcmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKyAgICBtX2ZyYW1lcy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShpbWFnZSkpOworICAgIAogICAgIC8vIFNpbmNlIHdlIGRvbid0
IGhhdmUgYSBkZWNvZGVyLCB3ZSBjYW4ndCBmaWd1cmUgb3V0IHRoZSBpbWFnZSBvcmllbnRhdGlv
bi4KICAgICAvLyBTZXQgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uIHRvIGJlIHRoZSBzYW1l
IGFzIG1fc2l6ZSBzbyBpdCdzIG5vdCAweDAuCi0gICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uID0gbV9zaXplID0gTmF0aXZlSW1hZ2U6OnNpemUoaW1hZ2UpOworICAgIG1fc2l6ZVJlc3Bl
Y3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZSA9IG1fZnJhbWVzWzBdLnNpemUoKTsKICAgICBtX2Rl
Y29kZWRTaXplID0gbV9zaXplLmFyZWEoKSAqIDQ7Ci0gICAgCi0gICAgbV9mcmFtZXMuZ3Jvdygx
KTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gTmF0aXZlSW1hZ2U6Omhhc0FscGhhKGlt
YWdlKTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0gICAgbV9mcmFt
ZXNbMF0ubV9pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOwogfQogCiBCaXRtYXBJbWFnZTo6fkJpdG1h
cEltYWdlKCkKQEAgLTEwNSw3ICsxMDMsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdlKCk7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTEyNSw5
ICsxMjMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsKQogICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBmcmFtZSBpc24ndCBhY3R1YWxseSBj
aGFuZ2luZyAod2UncmUganVzdCB0cnlpbmcgdG8KICAgICAgICAgLy8gc2F2ZSB0aGUgbWVtb3J5
IGZvciB0aGUgZnJhbWVidWZmZXIgZGF0YSksIHNvIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIKICAg
ICAgICAgLy8gdGhlIG1ldGFkYXRhLgotICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9m
cmFtZXNbaV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoZmFs
c2UpKQotICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gZnJhbWVCeXRlczsKKyAgICAg
ICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gbV9mcmFtZXNbaV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6
OkNhY2hpbmc6Ok1ldGFkYXRhKTsKICAgICB9CiAKICAgICBtX3NvdXJjZS5jbGVhcihkZXN0cm95
QWxsLCBjbGVhckJlZm9yZUZyYW1lLCBkYXRhKCksIG1fYWxsRGF0YVJlY2VpdmVkKTsKQEAgLTE1
MCw4ICsxNDYsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vz
c2FyeShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGFs
bEZyYW1lQnl0ZXMgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGFsbEZyYW1lQnl0ZXMgKz0gbV9mcmFtZXNbaV0udXNlZEZyYW1l
Qnl0ZXMoKTsKKyAgICBmb3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpCisgICAgICAgIGFsbEZy
YW1lQnl0ZXMgKz0gZnJhbWUuZnJhbWVCeXRlcygpOwogCiAgICAgaWYgKGFsbEZyYW1lQnl0ZXMg
PiBsYXJnZUFuaW1hdGlvbkN1dG9mZikgewogICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1h
Z2UgJXAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkgZGVzdHJveWluZ0RhdGE6IGFsbEZy
YW1lQnl0ZXM9JXUgY3V0b2ZmPSV1IiwgdGhpcywgYWxsRnJhbWVCeXRlcywgbGFyZ2VBbmltYXRp
b25DdXRvZmYpOwpAQCAtMTc3LDcgKzE3Myw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lN
ZXRhZGF0YUFuZE5vdGlmeSh1bnNpZ25lZCBmcmFtZUJ5dGVzQ2xlYXJlZCwgQ2xlYXJlZFNvCiAg
ICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKHRoaXMsIC1zYWZlQ2Fz
dDxpbnQ+KGZyYW1lQnl0ZXNDbGVhcmVkKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmNhY2hl
RnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIElt
YWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3ZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJh
bWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdl
RnJhbWVEYXRhOjpDYWNoaW5nIGNhY2hpbmcpCiB7CiAgICAgc2l6ZV90IG51bUZyYW1lcyA9IGZy
YW1lQ291bnQoKTsKICAgICBBU1NFUlQobV9kZWNvZGVkU2l6ZSA9PSAwIHx8IG51bUZyYW1lcyA+
IDEpOwpAQCAtMTg1LDI1ICsxODEsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBp
ZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51
bUZyYW1lcyk7CiAKLSAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFt
ZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICAgICAgbV9mcmFt
ZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgfQot
Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3NvdXJjZS5vcmllbnRhdGlv
bkF0SW5kZXgoaW5kZXgpOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSA9IHRy
dWU7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSA9IG1fc291cmNlLmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoaW5kZXgpOworICAgIG1fZnJhbWVzW2luZGV4XSA9IG1fc291cmNlLmNy
ZWF0ZUZyYW1lRGF0YUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGNhY2hpbmcpOwog
Ci0gICAgaWYgKHJlcGV0aXRpb25Db3VudChmYWxzZSkgIT0gY0FuaW1hdGlvbk5vbmUpCi0gICAg
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uID0gbV9zb3VyY2UuZnJhbWVEdXJhdGlvbkF0
SW5kZXgoaW5kZXgpOworICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBjYWNoZUZyYW1l
ICVsdSAoJXMldSBieXRlcywgY29tcGxldGUgJWQpIiwgdGhpcywgaW5kZXgsIGNhY2hpbmcgPT0g
SW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhID8gIm1ldGFkYXRhIG9ubHksICIgOiAi
IiwgbV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSwgbV9mcmFtZXNbaW5kZXhdLmlzQ29tcGxl
dGUoKSk7CiAKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYSA9IG1fc291cmNlLmZyYW1l
SGFzQWxwaGFBdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVz
ID0gbV9zb3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwot
Ci0gICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5
dGVzLCBjb21wbGV0ZSAlZCkiLCB0aGlzLCBpbmRleCwgZnJhbWVDYWNoaW5nID09IENhY2hlTWV0
YWRhdGFPbmx5ID8gIm1ldGFkYXRhIG9ubHksICIgOiAiIiwgbV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcywgbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSk7Ci0KLSAgICBpZiAobV9mcmFt
ZXNbaW5kZXhdLm1faW1hZ2UpIHsKLSAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZlQ2FzdDxp
bnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOworICAgIGlmIChtX2ZyYW1lc1tpbmRl
eF0uaGFzSW1hZ2UoKSkgeworICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4o
bV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0g
ZGVsdGFCeXRlczsKICAgICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJz
dW1lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVzZWQKICAgICAgICAgLy8gdG8gZGV0ZXJt
aW5lIGltYWdlIHByb3BlcnRpZXMuCkBAIC0yODgsMjEgKzI3MSwxOSBAQCBib29sIEJpdG1hcElt
YWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBmcmFtZSBhZmZl
Y3RlZCBieSBhcHBlbmRpbmcgbmV3IGRhdGEgaGVyZS4gVGh1cyB3ZSBoYXZlIHRvIGNsZWFyIGFs
bCB0aGUKICAgICAvLyBpbmNvbXBsZXRlIGZyYW1lcyB0byBiZSBzYWZlLgogICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNDbGVhcmVkID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJh
bWVzLnNpemUoKTsgKytpKSB7CisgICAgZm9yIChhdXRvJiBmcmFtZSA6IG1fZnJhbWVzKSB7CiAg
ICAgICAgIC8vIE5PVEU6IERvbid0IGNhbGwgZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgpIGhlcmUs
IHRoYXQgd2lsbCB0cnkgdG8KICAgICAgICAgLy8gZGVjb2RlIGFueSB1bmNhY2hlZCAoaS5lLiBu
ZXZlci1kZWNvZGVkIG9yCiAgICAgICAgIC8vIGNsZWFyZWQtb24tYS1wcmV2aW91cy1wYXNzKSBm
cmFtZXMhCi0gICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1l
Qnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXS5tX2hhdmVNZXRhZGF0YSAmJiAhbV9mcmFt
ZXNbaV0ubV9pc0NvbXBsZXRlKQotICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gKG1f
ZnJhbWVzW2ldLmNsZWFyKHRydWUpID8gZnJhbWVCeXRlcyA6IDApOworICAgICAgICBpZiAoZnJh
bWUuaGFzTWV0YWRhdGEoKSAmJiAhZnJhbWUuaXNDb21wbGV0ZSgpKQorICAgICAgICAgICAgZnJh
bWVCeXRlc0NsZWFyZWQgKz0gZnJhbWUuY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok5v
bmUpOwogICAgIH0KICAgICBkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFy
ZWQsIENsZWFyZWRTb3VyY2U6Ok5vKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlz
IGRpZmZlcmVudCBmb3IgaU9TPwogICAgIGludCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1f
ZnJhbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBpbnQgYnl0ZXMgPSBtX2ZyYW1lc1ttX2ZyYW1l
cy5zaXplKCkgLSAxXS5tX2ZyYW1lQnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1ttX2ZyYW1l
cy5zaXplKCkgLSAxXS5jbGVhcih0cnVlKSkgeworICAgICAgICBpZiAoaW50IGJ5dGVzID0gbV9m
cmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6
Ok5vbmUpKSB7CiAgICAgICAgICAgICBkZWx0YUJ5dGVzICs9IGJ5dGVzOwogICAgICAgICAgICAg
ZGVsdGFCeXRlcyArPSBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZTsKICAgICAgICAgICAgIG1fZGVj
b2RlZFByb3BlcnRpZXNTaXplID0gMDsKQEAgLTM2NiwxNSArMzQ3LDE1IEBAIGJvb2wgQml0bWFw
SW1hZ2U6OmlzU2l6ZUF2YWlsYWJsZSgpCiAgICAgcmV0dXJuIG1fc2l6ZUF2YWlsYWJsZTsKIH0K
IAotYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIElt
YWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK2Jvb2wgQml0bWFwSW1hZ2U6OmVuc3VyZUZy
YW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4LCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZyBjYWNoaW5n
KQogewogICAgIGlmIChpbmRleCA+PSBmcmFtZUNvdW50KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkKLSAgICAgICAgfHwgKGZyYW1l
Q2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2lt
YWdlKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFPbmx5ICYmICFt
X2ZyYW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpKQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4
LCAwLCBmcmFtZUNhY2hpbmcpOworICAgICAgICB8fCAoY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0
YTo6Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSAmJiAhbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdl
KCkpCisgICAgICAgIHx8IChjYWNoaW5nID09IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRh
ZGF0YSAmJiAhbV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpKQorICAgICAgICBjYWNoZUZy
YW1lKGluZGV4LCAwLCBjYWNoaW5nKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzg4LDEw
ICszNjksOSBAQCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TYwogCiAgICAgLy8gV2UgbWF5IGhhdmUg
Y2FjaGVkIGEgZnJhbWUgd2l0aCBhIGhpZ2hlciBzdWJzYW1wbGluZyBsZXZlbCwgaW4gd2hpY2gg
Y2FzZSB3ZSBuZWVkIHRvCiAgICAgLy8gcmUtZGVjb2RlIHdpdGggYSBsb3dlciBsZXZlbC4KLSAg
ICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2Ug
JiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwp
IHsKKyAgICBpZiAoaW5kZXggPCBtX2ZyYW1lcy5zaXplKCkgJiYgbV9mcmFtZXNbaW5kZXhdLmhh
c0ltYWdlKCkgJiYgc3Vic2FtcGxpbmdMZXZlbCA8IG1fZnJhbWVzW2luZGV4XS5zdWJzYW1wbGlu
Z0xldmVsKCkpIHsKICAgICAgICAgLy8gSWYgdGhlIGltYWdlIGlzIGFscmVhZHkgY2FjaGVkLCBi
dXQgYXQgdG9vIHNtYWxsIGEgc2l6ZSwgcmUtZGVjb2RlIGEgbGFyZ2VyIHZlcnNpb24uCi0gICAg
ICAgIGludCBzaXplQ2hhbmdlID0gLW1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXM7Ci0gICAg
ICAgIG1fZnJhbWVzW2luZGV4XS5jbGVhcih0cnVlKTsKKyAgICAgICAgaW50IHNpemVDaGFuZ2Ug
PSAtbV9mcmFtZXNbaW5kZXhdLmNsZWFyKEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpOb25lKTsK
ICAgICAgICAgaW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogICAgICAgICBtX2RlY29kZWRTaXpl
ICs9IHNpemVDaGFuZ2U7CiAgICAgICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCkBAIC0zOTksNDAg
KzM3OSw3MiBAQCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TYwogICAgIH0KIAogICAgIC8vIElmIHdl
IGhhdmVuJ3QgZmV0Y2hlZCBhIGZyYW1lIHlldCwgZG8gc28uCi0gICAgaWYgKGluZGV4ID49IG1f
ZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCi0gICAgICAgIGNhY2hl
RnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7Cisg
ICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLmhhc0lt
YWdlKCkpCisgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdl
RnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKTsKKworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0uaW1hZ2UoKTsKK30KKyAgICAKK05hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdl
OjpuYXRpdmVJbWFnZSgpCit7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApOworfQor
ICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0
IEludFNpemUmIHNpemUpCit7CisgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOworICAg
IAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBhdXRv
IGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBQbGF0
Zm9ybUltYWdlKGltYWdlKS5zaXplKCkgPT0gc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBpbWFn
ZTsKKyAgICB9CisgICAgCisgICAgLy8gRmFsbGJhY2sgdG8gdGhlIGZpcnN0IGZyYW1lIGltYWdl
IGlmIHdlIGNhbid0IGZpbmQgdGhlIHJpZ2h0IHNpemUKKyAgICByZXR1cm4gZnJhbWVJbWFnZUF0
SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleChtX2N1
cnJlbnRGcmFtZSk7Cit9CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7CitW
ZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMoKQor
eworICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIHNpemVfdCBjb3VudCA9
IGZyYW1lQ291bnQoKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKSkKKyAg
ICAgICAgICAgIGltYWdlcy5hcHBlbmQoaW1hZ2UpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
aW1hZ2VzOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNp
emVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hl
TWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdl
RnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pc0NvbXBsZXRlOworICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJhbWVE
dXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJc0Nh
Y2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJc0Nh
Y2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247Ci19Ci0K
LU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
Ci17Ci0gICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAgICBy
ZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmR1cmF0aW9uKCk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6
OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZy
YW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZy
YW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRh
ZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhOworICAgIGlm
IChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5oYXNBbHBoYSgpOwogCiAgICAgcmV0dXJuIG1fc291cmNlLmZyYW1lSGFzQWxwaGFB
dEluZGV4KGluZGV4KTsKIH0KQEAgLTQ0NCwxMSArNDU2LDExIEBAIGJvb2wgQml0bWFwSW1hZ2U6
OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiAKIEltYWdlT3JpZW50YXRpb24gQml0bWFw
SW1hZ2U6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAo
IWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAo
IWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRh
ZGF0YSkpCiAgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CiAKLSAgICBpZiAobV9m
cmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5k
ZXhdLm1fb3JpZW50YXRpb247CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNNZXRhZGF0YSgp
KQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm9yaWVudGF0aW9uKCk7CiAKICAgICBy
ZXR1cm4gbV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKIH0KQEAgLTcwMCwxNyAr
NzEyLDU2IEBAIENvbG9yIEJpdG1hcEltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKQogICAg
ICAgICByZXR1cm4gQ29sb3IoKTsKICAgICAKICAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgpKTsK
LSAgICBtX3NvbGlkQ29sb3IgPSBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKG1f
ZnJhbWVzWzBdLm1faW1hZ2UuZ2V0KCkpOworICAgIG1fc29saWRDb2xvciA9IG1fZnJhbWVzWzBd
LnNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogICAgIAogICAgIEFTU0VSVChtX3NvbGlkQ29sb3Ip
OwogICAgIHJldHVybiBtX3NvbGlkQ29sb3IudmFsdWUoKTsKIH0KICAgICAKK2Jvb2wgQml0bWFw
SW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpCit7CisgICAgaWYgKGZyYW1lQ291bnQoKSAhPSAx
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZW5zdXJlRnJhbWVJc0NhY2hl
ZCgwKSAmJiBtX2ZyYW1lc1swXS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKIGJvb2wg
Qml0bWFwSW1hZ2U6OmNhbkFuaW1hdGUoKQogewogICAgIHJldHVybiBzaG91bGRBbmltYXRlKCkg
JiYgZnJhbWVDb3VudCgpID4gMTsKIH0KIAordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCit7CisgICAgaWYgKGRlc3RSZWN0
LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYg
UExBVEZPUk0oSU9TKQorICAgIHN0YXJ0QW5pbWF0aW9uKERvTm90Q2F0Y2hVcCk7CisjZWxzZQor
ICAgIHN0YXJ0QW5pbWF0aW9uKCk7CisjZW5kaWYKKyAgICAKKyAgICBDb2xvciBjb2xvciA9IHNp
bmdsZVBpeGVsU29saWRDb2xvcigpOworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBjb2xvciwgb3ApOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSwgUGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZShjb250
ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCkpOworICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3MgdG9v
IGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgorICAgICAgICByZXR1cm47CisgICAg
CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbihkZXNjcmlwdGlvbi5pbWFnZU9yaWVu
dGF0aW9uKCkpOworICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigp
ID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQorICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1l
T3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICAKKyAgICBQbGF0Zm9ybUlt
YWdlKGltYWdlKS5kcmF3KGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBtX3NpemUsIG9wLCBt
b2RlLCBvcmllbnRhdGlvbik7CisgICAgCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAgICAg
ICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOworfQorICAgIAogdm9pZCBCaXRtYXBJ
bWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKICAgICBJbWFnZTo6ZHVtcCh0cyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRl
eCAwNzU4OTI5Y2Q4N2ZhZGFjZjAyYjZlZDhlZWFmZTdkZWZkNjZmMGM1Li4yMjE4YzgyNGI1Mjhm
ZDYzOWJhYjEzOGRlY2M5OGI5ODE2YTE2ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTI4LDExICsyOCwxMyBAQAogI2lmbmRlZiBC
aXRtYXBJbWFnZV9oCiAjZGVmaW5lIEJpdG1hcEltYWdlX2gKIAotI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdl
RnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIklt
YWdlU291cmNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1h
Z2UuaCIKIAogI2lmIFVTRShDRykgfHwgVVNFKEFQUEtJVCkKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CkBAIC00Nyw2MyArNDksOSBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhCSVRN
QVA7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIHN0cnVjdCBGcmFtZURhdGE7
Ci19Ci0KLW5hbWVzcGFjZSBXVEYgewotICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0
czxXZWJDb3JlOjpGcmFtZURhdGE+IDogcHVibGljIFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsK
LSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSBmYWxz
ZTsgLy8gTm90IGFsbCBGcmFtZURhdGEgbWVtYmVycyBpbml0aWFsaXplIHRvIDAuCi0gICAgfTsK
LX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaW1lcjsKIAotbmFtZXNwYWNlIE5h
dGl2ZUltYWdlIHsKLSAgICBJbnRTaXplIHNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKLSAg
ICBib29sIGhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci0gICAgQ29sb3Igc2luZ2xl
UGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci19Ci0KLS8vID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gRnJhbWVEYXRhIENs
YXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LQotc3RydWN0IEZyYW1lRGF0YSB7Ci1wdWJsaWM6Ci0gICAgRnJhbWVEYXRhKCkKLSAgICAgICAg
OiBtX2hhdmVNZXRhZGF0YShmYWxzZSkKLSAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCi0g
ICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+RnJhbWVEYXRh
KCkKLSAgICB7IAotICAgICAgICBjbGVhcih0cnVlKTsKLSAgICB9Ci0KLSAgICAvLyBDbGVhciB0
aGUgY2FjaGVkIGltYWdlIGRhdGEgb24gdGhlIGZyYW1lLCBhbmQgKG9wdGlvbmFsbHkpIHRoZSBt
ZXRhZGF0YS4KLSAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlcmUgd2FzIGNhY2hlZCBpbWFnZSBk
YXRhIHRvIGNsZWFyLgotICAgIGJvb2wgY2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKTsKLSAgICAK
LSAgICB1bnNpZ25lZCB1c2VkRnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgPyBt
X2ZyYW1lQnl0ZXMgOiAwOyB9Ci0KLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwotICAgIElt
YWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07
Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07Ci0gICAgZmxv
YXQgbV9kdXJhdGlvbiB7IDAgfTsKLSAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKLSAgICBi
b29sIG1faXNDb21wbGV0ZSA6IDE7Ci0gICAgYm9vbCBtX2hhc0FscGhhIDogMTsKLSAgICB1bnNp
Z25lZCBtX2ZyYW1lQnl0ZXMgeyAwIH07Ci19OwotCi0vLyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyBCaXRtYXBJbWFnZSBDbGFzcwotLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCiBjbGFzcyBC
aXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVy
YXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTsKQEAg
LTE1NSwxMiArMTAzLDYgQEAgcHVibGljOgogICAgIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50
YXRpb24oKSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYgVVNFKENHKQotICAgIFdFQkNPUkVfRVhQ
T1JUIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIG92ZXJyaWRlOwotICAgIENHSW1hZ2VSZWYg
Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgb3ZlcnJpZGU7Ci0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIGdldEhCSVRNQVAoSEJJVE1BUCkgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAsIGNvbnN0IEludFNpemUqKSBv
dmVycmlkZTsKQEAgLTE3NCw4ICsxMTYsMTMgQEAgcHVibGljOgogICAgIEV2YXNfT2JqZWN0KiBn
ZXRFdmFzT2JqZWN0KEV2YXMqKSBvdmVycmlkZTsKICNlbmRpZgogCisgICAgV0VCQ09SRV9FWFBP
UlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKICAgICBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoY3VycmVudEZyYW1lKCkpOyB9CisgICAgVmVj
dG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKSBvdmVycmlkZTsKKyAgICAK
KyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWxtb3N0U29saWRDb2xvcigpOwogCiAgICAgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZTsKIApAQCAtMjE1LDcgKzE2
Miw2IEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgZnJhbWVDb3VudCgpOwogCiAgICAgTmF0aXZl
SW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25TY2Fs
ZUhpbnQgPSAxKTsKLSAgICBOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QpOwogCiAgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90KTsK
IApAQCAtMjI1LDExICsxNzEsMTAgQEAgcHJvdGVjdGVkOgogICAgIEltYWdlT3JpZW50YXRpb24g
ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KTsKIAogICAgIC8vIERlY29kZXMgYW5kIGNh
Y2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBleGNlcHQgaW50ZXJuYWxseS4KLSAgICBlbnVt
IEltYWdlRnJhbWVDYWNoaW5nIHsgQ2FjaGVNZXRhZGF0YU9ubHksIENhY2hlTWV0YWRhdGFBbmRG
cmFtZSB9OwotICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICB2b2lk
IGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lRGF0
YTo6Q2FjaGluZyA9IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKTsK
IAogICAgIC8vIENhbGxlZCBiZWZvcmUgYWNjZXNzaW5nIG1fZnJhbWVzW2luZGV4XSBmb3IgaW5m
byB3aXRob3V0IGRlY29kaW5nLiBSZXR1cm5zIGZhbHNlIG9uIGluZGV4IG91dCBvZiBib3VuZHMu
Ci0gICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNh
Y2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIGJvb2wgZW5zdXJlRnJhbWVJc0Nh
Y2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFtZURh
dGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIHRvIGludmFs
aWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUgb3V0
CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGltYWdl
IHNvdXJjZSB0byBkZXN0cm95CkBAIC0yOTIsNyArMjM3LDcgQEAgcHJpdmF0ZToKICAgICBtdXRh
YmxlIEludFNpemUgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOwogCiAgICAgc2l6ZV90IG1f
Y3VycmVudEZyYW1lIHsgMCB9OyAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUgb2Yg
YW5pbWF0aW9uLgotICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBhcnJh
eSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJlZiBm
cmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgorICAgIFZlY3RvcjxJbWFnZUZyYW1lRGF0
YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBh
bmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUu
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJhbWVUaW1lcjsKICAgICBpbnQgbV9y
ZXBldGl0aW9uQ291bnQgeyBjQW5pbWF0aW9uTm9uZSB9OyAvLyBIb3cgbWFueSB0b3RhbCBhbmlt
YXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRvLiBUaGlzIHdpbGwgYmUgY0FuaW1hdGlvbk5vbmUgaWYg
dGhpcyBpbWFnZSB0eXBlIGlzIGluY2FwYWJsZSBvZiBhbmltYXRpb24uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA3YTI5OTkyZjc3MTg4ZTAzODI4ZDgwYTY1
YjhiZTJjZDhkYzJkZTc2Li44ZTdiNTJiMWY0ZjMxYzc0YTNjYjJhMTMyMTVkYTc3YTJiMThjMDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTEzNyw4ICsx
MzcsMTEgQEAgcHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3Vu
ZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCisgICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIE5hdGl2
ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxs
cHRyOyB9CiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7
IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gZnJhbWVzTmF0aXZlSW1hZ2Vz
KCkgeyByZXR1cm4geyB9OyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBm
b3JtYXRzLgogCkBAIC0xNTAsMTIgKzE1Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENGRGF0
YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5kaWYK
IAotI2lmIFVTRShDRykKLSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIHsg
cmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0ltYWdl
UmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVh
bCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gbnVsbHB0
cjsgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCBib29sIGdldEhC
SVRNQVAoSEJJVE1BUCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0SEJJ
VE1BUE9mU2l6ZShIQklUTUFQLCBjb25zdCBJbnRTaXplKikgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTE3OSw2ICsxNzYsOCBAQCBwdWJsaWM6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpcnR1
YWwgYm9vbCBub3RTb2xpZENvbG9yKCkgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCisgICAgCisg
ICAgdmlydHVhbCB2b2lkIGxheW91dElmTmVlZGVkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZHVtcChUZXh0U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjYzNjI5Yjk0NTFk
ZDZkOTRhMWFkZGQxNTQzMzc5NDI0YWY0YWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCkBAIC0wLDAgKzEsMTE5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgorCisjaW5jbHVkZSAi
Q29sb3IuaCIKKworI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2Vs
c2UKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiUGxhdGZv
cm1JbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ltYWdlRnJhbWVEYXRhOjpJbWFn
ZUZyYW1lRGF0YSgpCit7Cit9CisKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShOYXRp
dmVJbWFnZVB0ciYmIGltYWdlKQorICAgIDogbV9zdGF0dXMoU3RhdHVzOjpDb21wbGV0ZSkKKyAg
ICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCit7CisgICAgbV9zaXplID0gUGxhdGZvcm1JbWFn
ZShtX2ltYWdlKS5zaXplKCk7CisgICAgbV9oYXNBbHBoYSA9IFBsYXRmb3JtSW1hZ2UobV9pbWFn
ZSkuaGFzQWxwaGEoKTsKK30KKworSW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKEltYWdl
RGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBs
aW5nTGV2ZWwsIENhY2hpbmcgZnJhbWVDYWNoaW5nKQoreworICAgIEFTU0VSVChmcmFtZUNhY2hp
bmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UpOworICAgIAorICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6SW1h
Z2UgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpIHsKKyAgICAg
ICAgbV9pbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNh
bXBsaW5nTGV2ZWwpOworICAgICAgICBtX3N1YnNhbXBsaW5nTGV2ZWwgPSBzdWJzYW1wbGluZ0xl
dmVsOworICAgIH0KKyAgICAKKyAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1ldGFk
YXRhIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKSB7CisgICAg
ICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7Cisg
ICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KSA/
IFN0YXR1czo6Q29tcGxldGUgOiBTdGF0dXM6OlBhcnRpYWw7CisgICAgICAgIAorICAgICAgICBp
ZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkKKyAgICAgICAg
ICAgIG1fZHVyYXRpb24gPSBkZWNvZGVyLmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKKyAg
ICAgICAgCisgICAgICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4
KGluZGV4KTsKKyAgICAgICAgbV9zaXplID0gZGVjb2Rlci5mcmFtZVNpemVBdEluZGV4KGluZGV4
LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICB9Cit9CisKK0ltYWdlRnJhbWVEYXRhOjp+SW1hZ2VG
cmFtZURhdGEoKQoreworICAgIGNsZWFyU3ViSW1hZ2VzKCk7Cit9CisKK3ZvaWQgSW1hZ2VGcmFt
ZURhdGE6OmNsZWFyU3ViSW1hZ2VzKCkKK3sKKyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBQbGF0Zm9ybUltYWdlKG1faW1hZ2UpLmNsZWFyU3ViSW1hZ2VzKCk7
Cit9CisKK3Vuc2lnbmVkIEltYWdlRnJhbWVEYXRhOjpjbGVhcihDYWNoaW5nIGZyYW1lQ2FjaGlu
ZykKK3sKKyAgICBBU1NFUlQoZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok5vbmUgfHwgZnJhbWVD
YWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhKTsKKyAgICAKKyAgICB1bnNpZ25lZCBmcmFtZUJ5
dGVzID0gdGhpcy0+ZnJhbWVCeXRlcygpOworICAgIAorICAgIGNsZWFyU3ViSW1hZ2VzKCk7Cisg
ICAgCisgICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpOb25lKQorICAgICAgICAqdGhp
cyA9IEltYWdlRnJhbWVEYXRhKCk7CisgICAgZWxzZQorICAgICAgICBtX2ltYWdlID0gbnVsbHB0
cjsKKyAgICAKKyAgICByZXR1cm4gZnJhbWVCeXRlczsKK30KKworQ29sb3IgSW1hZ2VGcmFtZURh
dGE6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNJbWFnZSgp
IHx8IG1fc2l6ZSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAg
ICAKKyAgICByZXR1cm4gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5zaW5nbGVQaXhlbFNvbGlkQ29s
b3IoKTsKK30KKworYm9vbCBJbWFnZUZyYW1lRGF0YTo6aXNBbG1vc3RTb2xpZENvbG9yKCkgY29u
c3QKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICByZXR1cm4gUGxhdGZvcm1JbWFnZShtX2ltYWdlKS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsK
K30KKyAgICAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRnJhbWVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwYmI0YjlkZTZlZGU3Yzc5NjM1ZGI4ZGJhOGViZmVi
OTAyNjgyNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUZyYW1lRGF0YS5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJ
bWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5hdGl2
ZUltYWdlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7CitjbGFz
cyBJbWFnZURlY29kZXI7CisKKy8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAgaXMgbm8gc3Vic2FtcGxp
bmcsIDEgaXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMuCit1c2luZyBTdWJzYW1w
bGluZ0xldmVsID0gdWludDhfdDsKKworZW51bSA6IFN1YnNhbXBsaW5nTGV2ZWwgeworICAgIE1p
blN1YnNhbXBsaW5nTGV2ZWwgPSAwLAorICAgIE1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzLAorICAg
IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsID0gTWluU3Vic2FtcGxpbmdMZXZlbAorfTsKKworY2xh
c3MgSW1hZ2VGcmFtZURhdGEgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgQ2FjaGluZyB7IE5v
bmUsIE1ldGFkYXRhLCBJbWFnZSwgTWV0YWRhdGFBbmRJbWFnZSB9OworICAgIGVudW0gY2xhc3Mg
U3RhdHVzIHsgRW1wdHksIFBhcnRpYWwsIENvbXBsZXRlIH07CisgICAgCisgICAgSW1hZ2VGcmFt
ZURhdGEoKTsKKyAgICBJbWFnZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICBJbWFn
ZUZyYW1lRGF0YShJbWFnZURlY29kZXImLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyA9IENhY2hpbmc6Ok1ldGFkYXRhQW5k
SW1hZ2UpOworICAgIAorICAgIH5JbWFnZUZyYW1lRGF0YSgpOworICAgIAorICAgIHVuc2lnbmVk
IGNsZWFyKENhY2hpbmcpOworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0
OworICAgIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgCisgICAgU3RhdHVz
IHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAgYm9vbCBpc0NvbXBsZXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpDb21wbGV0ZTsgfQorICAgIElu
dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHVuc2lnbmVkIGZyYW1l
Qnl0ZXMoKSBjb25zdCB7IHJldHVybiBoYXNJbWFnZSgpID8gbV9zaXplLmFyZWEoKSAqIDQgOiAw
OyB9CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9
CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZW50YXRpb247IH0KKyAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwo
KSBjb25zdCB7IHJldHVybiBtX3N1YnNhbXBsaW5nTGV2ZWw7IH0KKyAgICBmbG9hdCBkdXJhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKyAgICAKKyAgICBib29sIGhhc0FscGhh
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNBbHBoYTsgfQorICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlOyB9CisgICAgYm9vbCBoYXNNZXRhZGF0YSgpIGNvbnN0IHsgcmV0
dXJuICFtX3NpemUuaXNFbXB0eSgpOyB9CisgICAgCitwcml2YXRlOgorICAgIHZvaWQgY2xlYXJT
dWJJbWFnZXMoKTsKKyAgICAKKyAgICBTdGF0dXMgbV9zdGF0dXMgeyBTdGF0dXM6OkVtcHR5IH07
CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICAK
KyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0SW1hZ2VPcmllbnRh
dGlvbiB9OworICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVsIHsgMCB9Owor
ICAgIGZsb2F0IG1fZHVyYXRpb24geyAwIH07CisgICAgYm9vbCBtX2hhc0FscGhhIHsgdHJ1ZSB9
OworfTsKKyAgICAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAppbmRleCBkZGQ4YTU1YmEwOTA2YzU4NjZhMTkyY2Y4ZTQxNGVhNzA3Yjcy
OGFjLi44MmY2ZTJkNmU0NTQzM2RhMWE3ZDU2YjM3MGRmYTYxYTRjNDE5MTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0yMjQs
NiArMjI0LDExIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2CiAgICAgcmV0dXJuIGluaXRpYWxp
emVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKSA6IG51bGxwdHI7CiB9CiAKK0ltYWdlRnJhbWVEYXRhIEltYWdlU291cmNlOjpj
cmVhdGVGcmFtZURhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZyBjYWNoaW5nKQoreworICAgIHJl
dHVybiBpbml0aWFsaXplZCgpID8gSW1hZ2VGcmFtZURhdGEoKm1fZGVjb2RlciwgaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwsIGNhY2hpbmcpIDogSW1hZ2VGcmFtZURhdGEoKTsKK30KKyAgICAKIHZv
aWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgaWYgKG1f
YWxsb3dTdWJzYW1wbGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCmluZGV4IDYwMzU3MzliN2U4YjA5NmRjOGRmZTljNTMwYTQyYzZmMjkxYmRh
MDAuLmE0MGM3Y2U5MzA3Y2RhZGYwNzlhYjcwMWE4Mjc5OWI2OTA1MjlkNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMjcsNiArMjcs
NyBAQAogI2lmbmRlZiBJbWFnZVNvdXJjZV9oCiAjZGVmaW5lIEltYWdlU291cmNlX2gKIAorI2lu
Y2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgog
I2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKQEAgLTYz
LDkgKzY0LDYgQEAgY29uc3QgaW50IGNBbmltYXRpb25Mb29wT25jZSA9IDA7CiBjb25zdCBpbnQg
Y0FuaW1hdGlvbkxvb3BJbmZpbml0ZSA9IC0xOwogY29uc3QgaW50IGNBbmltYXRpb25Ob25lID0g
LTI7CiAKLS8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAgaXMgbm8gc3Vic2FtcGxpbmcsIDEgaXMgaGFs
ZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMuCi10eXBlZGVmIHNob3J0IFN1YnNhbXBsaW5n
TGV2ZWw7Ci0KIGNsYXNzIEltYWdlU291cmNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bWFnZVNvdXJjZSk7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpAQCAtMTMyLDE4ICsx
MzAsMTkgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVBdEluZGV4
KHNpemVfdCkgY29uc3Q7CiAgICAgCiAgICAgLy8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1YnNhbXBs
ZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdElt
YWdlT3JpZW50YXRpb24pIGNvbnN0OworICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgUmVzcGVjdElt
YWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3Q7
CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQg
ZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0CiAgICAgLy8gZGVjb2RlZCB0aGVuIHJldHVy
biAwLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IDApIGNvbnN0OworICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsKICAgICAK
ICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3Jp
ZW50YXRpb24KICAgICAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlzIGFmdGVy
IGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OwogICAgIC8vIHNlZSBjb21tZW50
cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1
bHRTdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFtZURhdGFB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVs
LCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZyA9IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRh
ZGF0YUFuZEltYWdlKTsKICAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjdhZWE0ODlmM2ViMmE4Mjg3NzFjMjEwM2U4ZDRk
MGJlMTdiZTVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1JbWFnZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJH
cmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7
CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBJbnRTaXplOworY2xhc3MgR3JhcGhpY3NDb250ZXh0
OworCitjbGFzcyBQbGF0Zm9ybUltYWdlIHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKKyAgICAgICAgOiBtX2ltYWdlKGltYWdlKQorICAg
IHsKKyAgICB9CisKKyAgICBib29sIGlzTmlsKCkgY29uc3QgeyByZXR1cm4gIW1faW1hZ2U7IH0K
KyAgICB2b2lkIGNsZWFyU3ViSW1hZ2VzKCk7CisKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdDsK
KyAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7CisgICAgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENv
bG9yKCkgY29uc3Q7CisgICAgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoKSBjb25zdDsKKyAgICB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJikgY29uc3Q7CisKKyAg
ICBzdGF0aWMgZmxvYXQgc3Vic2FtcGxpbmdTY2FsZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpOworCitwcml2YXRl
OgorI2lmIFVTRShDRykKKyAgICBDR0ltYWdlUmVmIGNnSW1hZ2VSZWYoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlID8gbV9pbWFnZS5nZXQoKSA6IG51bGxwdHI7IH0KKyNlbmRpZgorICAgIE5hdGl2
ZUltYWdlUHRyIG1faW1hZ2U7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5k
ZXggZjRjMTQ1N2JiYjI1NTc1NGYwMGEwNjI1ZWU4M2UwNGRhN2M2ZWZjZi4uZDUyMGY1ZDU4NWFj
NjBkYmFlZTI1NWUxYjgzYzI0ZGM2ODcyMTBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjp1cGRhdGVEaXNwbGF5TW9kZSgpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1fcGF1c2VkSW1hZ2UgPSBp
bWFnZS0+Z2V0Q0dJbWFnZVJlZigpOworICAgICAgICAgICAgICAgIG1fcGF1c2VkSW1hZ2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgICAgICAgICBpZiAo
IW1fcGF1c2VkSW1hZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgbV9kaXNwbGF5TW9kZSA9IFBh
aW50SXRCbGFjazsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fp
cm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzcyMmJlYzUzYWI4YTA4YThk
YTg1MjhiOWUwZDdjNGQwY2Q0MTM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKLQotI2lmIFVTRShDQUlSTykKLQotI2luY2x1
ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgotI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRl
IDxjYWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBOYXRpdmVJbWFn
ZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2Up
Ci17Ci0gICAgcmV0dXJuIGNhaXJvU3VyZmFjZVNpemUoaW1hZ2UuZ2V0KCkpOwotfQotCi1ib29s
IGhhc0FscGhhKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiBpbWFnZSkKLXsKLSAgICBy
ZXR1cm4gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChpbWFnZS5nZXQoKSkgIT0gQ0FJUk9fQ09O
VEVOVF9DT0xPUjsKLX0KLQotQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+JiBpbWFnZSkKLXsKLSAgICBBU1NFUlQoaW1hZ2UpOwotICAgIAot
ICAgIGlmIChOYXRpdmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkKLSAgICAg
ICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShpbWFn
ZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQotICAgICAgICByZXR1cm4gQ29s
b3IoKTsKLQotICAgIFJHQkEzMiogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjxSR0JBMzIq
PihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJu
IGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7Ci19Ci0KLX0KLQotdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCi0gICAgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9u
KQotewotICAgIGlmICghZHN0LndpZHRoKCkgfHwgIWRzdC5oZWlnaHQoKSB8fCAhc3JjLndpZHRo
KCkgfHwgIXNyYy5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhcnRBbmltYXRp
b24oKTsKLQotICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZy
YW1lKTsKLSAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhh
dmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0KLSAgICBDb2xvciBjb2xvciA9IHNp
bmdsZVBpeGVsU29saWRDb2xvcigpOwotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRzdCwgY29sb3IsIG9wKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGNvbnRleHQuc2F2ZSgpOwotCi0gICAgLy8gU2V0IHRoZSBj
b21wb3NpdGluZyBvcGVyYXRpb24uCi0gICAgaWYgKG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIg
JiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhZnJhbWVIYXNBbHBoYUF0SW5kZXgo
bV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVDb3B5KTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKG9wLCBibGVuZE1vZGUpOwotCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9T
QU1QTElORykKLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBjYWlyb1N1cmZhY2VTaXplKHN1cmZh
Y2UuZ2V0KCkpOwotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBhZGp1c3RTb3VyY2VS
ZWN0Rm9yRG93blNhbXBsaW5nKHNyYywgc2NhbGVkU2l6ZSk7Ci0jZWxzZQotICAgIEZsb2F0UmVj
dCBhZGp1c3RlZFNyY1JlY3Qoc3JjKTsKLSNlbmRpZgotCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBm
cmFtZU9yaWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7Ci0gICAgaWYg
KGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3Jp
ZW50YXRpb24pCi0gICAgICAgIGZyYW1lT3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7Ci0KLSAgICBGbG9hdFJlY3QgZHN0UmVjdCA9IGRzdDsKLQot
ICAgIGlmIChmcmFtZU9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7Ci0g
ICAgICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgw
LCAwKS4KLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgp
KTsKLSAgICAgICAgZHN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwotICAgICAgICBj
b250ZXh0LmNvbmNhdENUTShmcmFtZU9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRz
dFJlY3Quc2l6ZSgpKSk7Ci0gICAgICAgIGlmIChmcmFtZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFz
SGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2ls
bCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3Jp
ZW50YXRpb24gb2YKLSAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBm
b3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCi0gICAg
ICAgICAgICBkc3RSZWN0ID0gRmxvYXRSZWN0KGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSwgZHN0
UmVjdC5oZWlnaHQoKSwgZHN0UmVjdC53aWR0aCgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2Uu
Z2V0KCksIGRzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgY29udGV4dCk7Ci0KLSAgICBjb250ZXh0
LnJlc3RvcmUoKTsKLQotICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2Jz
ZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKLX0KLQotYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wg
Y2xlYXJNZXRhZGF0YSkKLXsKLSAgICBpZiAoY2xlYXJNZXRhZGF0YSkKLSAgICAgICAgbV9oYXZl
TWV0YWRhdGEgPSBmYWxzZTsKLQotICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIG1faW1hZ2Ug
PSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoQ0FJUk8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9y
bUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGxhdGZvcm1JbWFnZUNhaXJvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGFkYWVjMjcwZTMxYjA1NGFmYzVm
NjZkNDgyODhhZWJmMDYxZTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcApAQCAtMCwwICsxLDEx
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorCisjaWYgVVNFKENB
SVJPKQorCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBQbGF0Zm9ybUltYWdlOjpjbGVhclN1YkltYWdlcygpCit7Cit9CisKK0ludFNpemUg
UGxhdGZvcm1JbWFnZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzTmlsKCkgPyBJbnRT
aXplKCkgOiBjYWlyb1N1cmZhY2VTaXplKG1faW1hZ2UuZ2V0KCkpOworfQorCitib29sIFBsYXRm
b3JtSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOaWwoKSB8fCBjYWly
b19zdXJmYWNlX2dldF9jb250ZW50KG1faW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09M
T1I7Cit9CisKK0NvbG9yIFBsYXRmb3JtSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNv
bnN0Cit7CisgICAgaWYgKGlzTmlsKCkgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCisgICAg
ICAgIHJldHVybiBDb2xvcigpOworCisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUobV9p
bWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQorICAgICAgICByZXR1cm4g
Q29sb3IoKTsKKworICAgIFJHQkEzMiogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjxSR0JB
MzIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1faW1hZ2UuZ2V0KCkpKTsKKyAgICBy
ZXR1cm4gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKK30KKworYm9vbCBQbGF0
Zm9ybUltYWdlOjppc0FsbW9zdFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKworZmxvYXQgUGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZShHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmKQoreworICAgIHJldHVy
biAxOworfQorCit2b2lkIFBsYXRmb3JtSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEludFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIGNv
bnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKSBjb25zdAoreworICAgIGNvbnRleHQu
c2F2ZSgpOworICAgIAorICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgorICAg
IGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIG1vZGUgPT0gQmxlbmRNb2RlTm9ybWFs
ICYmICFoYXNBbHBoYSgpKQorICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVDb3B5KTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKG9wLCBtb2RlKTsKKyAgICAgICAgCisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9X
Tl9TQU1QTElORykKKyAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBjYWlyb1N1cmZhY2VTaXplKG1f
aW1hZ2UuZ2V0KCkpOworICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBhZGp1c3RTb3Vy
Y2VSZWN0Rm9yRG93blNhbXBsaW5nKHNyY1JlY3QsIHNjYWxlZFNpemUpOworI2Vsc2UKKyAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNyY1JlY3QpOworI2VuZGlmCisgICAgICAgIAorICAg
IEZsb2F0UmVjdCBhZGp1c3RlZERlc3RSZWN0ID0gZGVzdFJlY3Q7CisgICAgICAgIAorICAgIGlm
IChvcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgICAgICAvLyBJ
bWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCisgICAg
ICAgIGNvbnRleHQudHJhbnNsYXRlKGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpKTsKKyAgICAg
ICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOworICAgICAgICBj
b250ZXh0LmNvbmNhdENUTShvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3Rl
ZERlc3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNI
ZWlnaHQoKSkgeworICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSB3aWxs
IGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmll
bnRhdGlvbiBvZgorICAgICAgICAgICAgLy8gdGhlIGltYWdlLCBhcyBpdCB3YXMgbmVlZGVkIGZv
ciBwYWdlIGxheW91dCwgc28gd2UgbmVlZCB0byByZXZlcnNlIGl0IGJhY2sgaGVyZS4KKyAgICAg
ICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0U2l6ZShhZGp1c3RlZERlc3RSZWN0LnNpemUoKS50
cmFuc3Bvc2VkU2l6ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KG1faW1hZ2UuZ2V0KCksIGFkanVzdGVk
RGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgY29udGV4dCk7CisKKyAgICBjb250ZXh0LnJlc3Rv
cmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKENBSVJP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFw
SW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJ
bWFnZUNHLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNjODFhMTcwYmU3OWFl
NmJlNmNhY2RjOTlmNGMzOThjYWFmNDI2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRt
YXBJbWFnZUNHLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgotCi0jaWYgVVNFKENHKQotCi0j
aW5jbHVkZSAiQ29yZUdyYXBoaWNzU1BJLmgiCi0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgi
Ci0jaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRDRy5oIgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJTdWJpbWFnZUNh
Y2hlV2l0aFRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi0jaWYgVVNFKEFQ
UEtJVCkKLSNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMu
aD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oIgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSA8V2Vi
S2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgotI2VuZGlmCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIE5hdGl2ZUltYWdlIHsKLQotSW50U2l6ZSBz
aXplKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCi17Ci0gICAgQVNTRVJUKGlt
YWdlKTsKLSAgICByZXR1cm4gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci19Ci0KLWJvb2wgaGFzQWxwaGEoY29uc3Qg
UmV0YWluUHRyPENHSW1hZ2VSZWY+JikKLXsKLSAgICAvLyBGSVhNRTogQW5zd2VyIGNvcnJlY3Rs
eSB0aGUgcXVlc3Rpb246IGRvZXMgdGhlIENHSW1hZ2VSZWYgaGF2ZSBhbHBoYSBjaGFubm5lbD8K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAgICAKLUNvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcihj
b25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQotewotICAgIEFTU0VSVChpbWFnZSk7
Ci0gICAgCi0gICAgaWYgKE5hdGl2ZUltYWdlOjpzaXplKGltYWdlKSAhPSBJbnRTaXplKDEsIDEp
KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAKLSAgICB1bnNpZ25lZCBjaGFyIHBpeGVs
WzRdOyAvLyBSR0JBCi0gICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xvclNwYWNl
UmVmKCksCi0gICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1h
cEJ5dGVPcmRlcjMyQmlnKSk7Ci0KLSAgICBpZiAoIWJpdG1hcENvbnRleHQpCi0gICAgICAgIHJl
dHVybiBDb2xvcigpOwotICAgIAotICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRtYXBDb250
ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0
bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKSwgaW1hZ2UuZ2V0KCkpOwot
ICAgIAotICAgIGlmICghcGl4ZWxbM10pCi0gICAgICAgIHJldHVybiBDb2xvcigwLCAwLCAwLCAw
KTsKLQotICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsx
XSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7
Ci19Ci0KLX0KLQotYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKLXsK
LSAgICBpZiAoY2xlYXJNZXRhZGF0YSkKLSAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsK
LQotICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IDA7Ci0KLSAgICBpZiAobV9pbWFnZSkgewotI2lm
IENBQ0hFX1NVQklNQUdFUwotICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFnZShtX2lt
YWdlLmdldCgpKTsKLSNlbmRpZgotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQ0dJbWFnZVJlZiBC
aXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCi17Ci0gICAgcmV0dXJuIGZyYW1lSW1hZ2VBdElu
ZGV4KDApLmdldCgpOwotfQotCi1DR0ltYWdlUmVmIEJpdG1hcEltYWdlOjpnZXRGaXJzdENHSW1h
Z2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBzaXplX3QgY291bnQgPSBm
cmFtZUNvdW50KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0g
ICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdldCgpOwot
ICAgICAgICBpZiAoY2dJbWFnZSAmJiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChjZ0ltYWdlKSwg
Q0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKSkgPT0gc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBj
Z0ltYWdlOwotICAgIH0KLQotICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IENHSW1hZ2VS
ZWYgaWYgd2UgY2FuJ3QgZmluZCB0aGUgcmlnaHQgc2l6ZQotICAgIHJldHVybiBnZXRDR0ltYWdl
UmVmKCk7Ci19Ci0KLVJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFn
ZUFycmF5KCkKLXsKLSAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7Ci0gICAgaWYgKCFj
b3VudCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgQ0ZNdXRhYmxlQXJyYXlS
ZWYgYXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShOVUxMLCBjb3VudCwgJmtDRlR5cGVBcnJh
eUNhbGxCYWNrcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0g
ICAgICAgIGlmIChDR0ltYWdlUmVmIGN1cnJGcmFtZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdl
dCgpKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJyRnJhbWUpOwot
ICAgIH0KLSAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7Ci19Ci0KLXZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRp
b24pCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXJ0QW5pbWF0aW9uKERvTm90Q2F0Y2hV
cCk7Ci0jZWxzZQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0jZW5kaWYKLQotICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBpbWFnZXMg
Zm9yIGRyYXdpbmcgaW50byBQREYgY29udGV4dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0SXNQREZD
b250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQotICAgICAgICBpbWFnZSA9IGNvcHlVbnNj
YWxlZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVU
cmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgp
KSk7Ci0gICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwg
c3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qu
d2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0
LmhlaWdodCgpKSk7Ci0KLSAgICAgICAgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChtX2N1cnJl
bnRGcmFtZSwgc3Vic2FtcGxpbmdTY2FsZSk7Ci0gICAgfQotCi0gICAgaWYgKCFpbWFnZSkgLy8g
SWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOwot
ICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0
eHQsIGRlc3RSZWN0LCBjb2xvciwgY29tcG9zaXRlT3ApOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBp
cyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgaW1hZ2VTaXplKENHSW1hZ2VHZXRX
aWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKTsKLSAgICAK
LSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgdW5zdWJzYW1wbGVk
IGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUgc3Vic2FtcGxlZCBpbWFnZS4KLSAg
ICBGbG9hdFJlY3Qgc2NhbGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgaWYgKGltYWdlU2l6ZSAh
PSBtX3NpemUpIHsKLSAgICAgICAgRmxvYXRSZWN0IG9yaWdpbmFsSW1hZ2VCb3VuZHMoRmxvYXRQ
b2ludCgpLCBtX3NpemUpOwotICAgICAgICBGbG9hdFJlY3Qgc3Vic2FtcGxlZEltYWdlQm91bmRz
KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKTsKLSAgICAgICAgc2NhbGVkU3JjUmVjdCA9IG1hcFJl
Y3Qoc3JjUmVjdCwgb3JpZ2luYWxJbWFnZUJvdW5kcywgc3Vic2FtcGxlZEltYWdlQm91bmRzKTsK
LSAgICB9Ci0gICAgCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKLSAgICBpZiAo
ZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1hZ2VPcmll
bnRhdGlvbikKLSAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleCht
X2N1cnJlbnRGcmFtZSk7Ci0KLSAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VT
aXplLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgb3Jp
ZW50YXRpb24pOwotCi0gICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNl
cnZlcigpLT5kaWREcmF3KHRoaXMpOwotfQotCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gQml0bWFw
SW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKLXsKLSAg
ICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4XS5tX2lt
YWdlKQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsKLQotICAgIGlmICghbV9mcmFtZXNb
aW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlOwotCi0gICAgcmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KGluZGV4KTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggYjQyOGQ1MGQ5NGJm
OTI0MjgwMzI4N2QyZWVjMTZiZDY5YzUyOGQ5Mi4uM2RhYTEzOWFiN2VhNWI0MjE1Nzc4ODM1ZDM1
M2Q4YWRiNWYwYzc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC03Miw3ICs3Miw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJu
OjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VU
cmFuCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2Fu
IHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0
ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAobV9yZXBl
YXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRlV2l0aElt
YWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCksIHBhdHRlcm5UcmFu
c2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJldHVybiB3
a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxlSW1hZ2UoKS0+bmF0aXZl
SW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29uc3RhbnRT
cGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0
ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRf
TUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4KQEAgLTgz
LDcgKzgzLDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlTdGVwID0g
bV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUg
cGF0dGVybiB3aWxsIHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVy
aW5nIGluIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1h
Z2UgPSBDR0ltYWdlUmV0YWluKHRpbGVJbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCkpOworICAgIENH
SW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmxlYWtS
ZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJhY2tzID0g
eyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsKICAgICByZXR1
cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcsIFRSVUUs
ICZwYXR0ZXJuQ2FsbGJhY2tzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmYjJkZTBlYTEy
ZGEyMTRmMTA0NmMzOTYyZThlYWI1M2M2NDQxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCkBAIC0wLDAg
KzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKworI2lmIFVT
RShDRykKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiQ29yZUdyYXBoaWNzU1BJLmgi
CisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNp
bmNsdWRlICJTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCisKKyNpZiBQTEFURk9STShXSU4pCisj
aW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6
Y2xlYXJTdWJJbWFnZXMoKQoreworI2lmIENBQ0hFX1NVQklNQUdFUworICAgIGlmICghaXNOaWwo
KSkKKyAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoY2dJbWFnZVJlZigpKTsKKyNl
bmRpZgorfQorCitJbnRTaXplIFBsYXRmb3JtSW1hZ2U6OnNpemUoKSBjb25zdAoreworICAgIHJl
dHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDogSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoY2dJbWFn
ZVJlZigpKSwgQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlUmVmKCkpKTsKK30KKworYm9vbCBQbGF0
Zm9ybUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEFuc3dlciBjb3Jy
ZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2VzIHRoZSBDR0ltYWdlUmVmIGhhdmUgYWxwaGEgY2hhbm5u
ZWw/CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0NvbG9yIFBsYXRmb3JtSW1hZ2U6OnNpbmdsZVBp
eGVsU29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKGlzTmlsKCkgfHwgc2l6ZSgpICE9IElu
dFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIHVuc2lnbmVk
IGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKKyAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwKKyAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0
IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAgICAKKyAgICBpZiAoIWJpdG1hcENvbnRl
eHQpCisgICAgICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIENHQ29udGV4dFNldEJsZW5k
TW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKKyAgICBDR0NvbnRl
eHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKSwg
Y2dJbWFnZVJlZigpKTsKKyAgICAKKyAgICBpZiAoIXBpeGVsWzNdKQorICAgICAgICByZXR1cm4g
Q29sb3IoMCwgMCwgMCwgMCk7CisgICAgCisgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1
IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8g
cGl4ZWxbM10sIHBpeGVsWzNdKTsKK30KKyAgICAKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aXNBbG1v
c3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gY2dJbWFnZVJl
ZigpOworICAgIEFTU0VSVChDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChpbWFnZSkgPT0gOCk7
CisgICAgCisgICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRtYXBJbmZv
KGltYWdlKTsKKyAgICBpZiAoIShpbWFnZUluZm8gJiBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRs
ZSkgfHwgKGltYWdlSW5mbyAmIGtDR0JpdG1hcEFscGhhSW5mb01hc2spICE9IGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkRmlyc3QpIHsKKyAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGJlaW5n
IGFibGUgdG8gaGFuZGxlIG90aGVyIHBpeGVsIGZvcm1hdHMuCisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHNpemVf
dCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CisgICAgc2l6ZV90IGhlaWdodCA9IENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VH
ZXRCeXRlc1BlclJvdyhpbWFnZSk7CisgICAgCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92
aWRlcihpbWFnZSkpKTsKKyAgICBjb25zdCBVSW50OCogZGF0YSA9IENGRGF0YUdldEJ5dGVQdHIo
cHJvdmlkZXIuZ2V0KCkpOworICAgIAorICAgIC8vIE92ZXJsYXkgYSBncmlkIG9mIHNhbXBsaW5n
IGRvdHMgb24gdG9wIG9mIGEgZ3JheXNjYWxlIHZlcnNpb24gb2YgdGhlIGltYWdlLgorICAgIC8v
IEZvciB0aGUgaW50ZXJpb3IgcG9pbnRzLCBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbHVt
aW5hbmNlIGFtb25nIHRoZSBzYW1wbGUgcG9pbnQKKyAgICAvLyBhbmQgaXRzIHN1cnJvdW5kcyBw
b2ludHMsIHNjYWxlZCBieSB0cmFuc3BhcmVuY3kuCisgICAgY29uc3QgdW5zaWduZWQgc2FtcGxl
Um93cyA9IDc7CisgICAgY29uc3QgdW5zaWduZWQgc2FtcGxlQ29scyA9IDc7CisgICAgLy8gRklY
TUU6IFJlZmluZSB0aGUgcHJvcGVyIG51bWJlciBvZiBzYW1wbGVzLCBhbmQgYWNjb21tb2RhdGUg
ZGlmZmVyZW50IGFzcGVjdCByYXRpb3MuCisgICAgaWYgKHdpZHRoIDwgc2FtcGxlQ29scyB8fCBo
ZWlnaHQgPCBzYW1wbGVSb3dzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8g
RW5zdXJlIHRoYXQgdGhlIGxhc3Qgcm93L2NvbHVtbiBsYW5kIG9uIHRoZSBpbWFnZSBwZXJpbWV0
ZXIuCisgICAgY29uc3QgZmxvYXQgc3RyaWRlV2lkdGggPSBzdGF0aWNfY2FzdDxmbG9hdD4od2lk
dGggLSAxKSAvIChzYW1wbGVDb2xzIC0gMSk7CisgICAgY29uc3QgZmxvYXQgc3RyaWRlSGVpZ2h0
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCAtIDEpIC8gKHNhbXBsZVJvd3MgLSAxKTsKKyAg
ICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3NdW3NhbXBsZUNvbHNdOworICAgIAorICAgIC8vIEZp
bmQgdGhlIGx1bWluYW5jZSBvZiB0aGUgc2FtcGxlIHBvaW50cy4KKyAgICBmbG9hdCB5ID0gMDsK
KyAgICBjb25zdCBVSW50OCogcm93ID0gZGF0YTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2FtcGxlUm93czsgKytpKSB7CisgICAgICAgIGZsb2F0IHggPSAwOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSAwOyBqIDwgc2FtcGxlQ29sczsgKytqKSB7CisgICAgICAgICAgICBjb25z
dCBVSW50OCogcDAgPSByb3cgKyAoc3RhdGljX2Nhc3Q8aW50Pih4ICsgLjUpKSAqIDQ7CisgICAg
ICAgICAgICAvLyBSIEcgQiBBCisgICAgICAgICAgICBzYW1wbGVzW2ldW2pdID0gKDAuMjEyNSAq
ICpwMCArIDAuNzE1NCAqICoocDArMSkgKyAwLjA3MjEgKiAqKHAwKzIpKSAqICoocDArMykgLyAy
NTU7CisgICAgICAgICAgICB4ICs9IHN0cmlkZVdpZHRoOworICAgICAgICB9CisgICAgICAgIHkg
Kz0gc3RyaWRlSGVpZ2h0OworICAgICAgICByb3cgPSBkYXRhICsgKHN0YXRpY19jYXN0PGludD4o
eSArIC41KSkgKiBieXRlc1BlclJvdzsKKyAgICB9CisgICAgCisgICAgLy8gRGV0ZXJtaW5lIHRo
ZSBpbWFnZSBzY29yZS4KKyAgICBmbG9hdCBhY2N1bVNjb3JlID0gMDsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAxOyBpIDwgc2FtcGxlUm93cyAtIDE7ICsraSkgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAxOyBqIDwgc2FtcGxlQ29scyAtIDE7ICsraikgeworICAgICAgICAgICAgZmxvYXQg
ZGlmZiA9IHNhbXBsZXNbaSAtIDFdW2pdICsgc2FtcGxlc1tpICsgMV1bal0gKyBzYW1wbGVzW2ld
W2ogLSAxXSArIHNhbXBsZXNbaV1baiArIDFdIC0gNCAqIHNhbXBsZXNbaV1bal07CisgICAgICAg
ICAgICBhY2N1bVNjb3JlICs9IGRpZmYgKiBkaWZmOworICAgICAgICB9CisgICAgfQorICAgIAor
ICAgIC8vIFRoZSBzY29yZSBmb3IgYSBnaXZlbiBzYW1wbGUgY2FuIGJlIHdpdGhpbiB0aGUgcmFu
Z2Ugb2YgMCBhbmQgMjU1XjIuCisgICAgcmV0dXJuIGFjY3VtU2NvcmUgPCAyNTAwICogKHNhbXBs
ZVJvd3MgLSAyKSAqIChzYW1wbGVDb2xzIC0gMik7Cit9CisKK2Zsb2F0IFBsYXRmb3JtSW1hZ2U6
OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCit7CisgICAgLy8gTmV2ZXIg
dXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgorICAg
IGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSkK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgCisgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRp
b25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdl
dENUTShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluPGZs
b2F0PigxLCBzdGQ6Om1heCh0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLndpZHRoIC8g
c3JjUmVjdC53aWR0aCgpLCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLmhlaWdodCAv
IHNyY1JlY3QuaGVpZ2h0KCkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIG1vZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9u
KSBjb25zdAoreworICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdl
IHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KKyAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFn
ZVNpemUgPSBzaXplKCk7CisgICAgCisgICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0
ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhl
IHN1YnNhbXBsZWQgaW1hZ2UuCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1Jl
Y3Q7CisgICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkKKyAgICAgICAgYWRq
dXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNTaXplKSwg
RmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOworICAgIAorICAgIGNvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIG9wLCBtb2RlLCBvcmllbnRhdGlvbik7Cit9CisgICAgCit9CisKKyNl
bmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5t
bQppbmRleCA4OTcyMGQxNzM2NWRhN2U4YmE4NDY5ZDUyOTQ1NDhkNTE4NDdhN2ZlLi40NDc2ZmM1
Zjg3YzM0OTg4ZjZkOWFkNTVlZWJkOGQxYjliYjAyMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFj
a1JlcHJlc2VudGF0aW9uQ29jb2EubW0KQEAgLTEyOSw3ICsxMjksNyBAQCBUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbkNvY29hOjp+VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYSgpCiB2b2lkIFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OnVwZGF0ZSgpCiB7CiAgICAgaWYgKGF1dG8gcmVw
cmVzZW50YXRpb24gPSBtX2NsaWVudC5jcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdl
KCkpCi0gICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlv
bi0+Z2V0Q0dJbWFnZVJlZigpXTsKKyAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29udGVudHM6
KGlkKXJlcHJlc2VudGF0aW9uLT5uYXRpdmVJbWFnZSgpLmdldCgpXTsKIH0KIAogdm9pZCBUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpzZXRDb250ZW50U2NhbGUoZmxvYXQgc2NhbGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5k
ZXggMDFlYjZkZDMwMDQzYTIyNTI5MTc2ZmQ5MTIxMTdkYzU3NzZjMTdiYS4uZGMxYzdjNzA5NWQ5
NDRjNGM2MmYxZmUwOTM1NzAyYTEzYzdjN2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtODUsMzEgKzg1LDIyIEBAIENGRGF0
YVJlZiBCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkKICAgICBpZiAobV90aWZm
UmVwKQogICAgICAgICByZXR1cm4gbV90aWZmUmVwLmdldCgpOwogCi0gICAgdW5zaWduZWQgbnVt
RnJhbWVzID0gZnJhbWVDb3VudCgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2VzID0gdGhpcy0+ZnJh
bWVzTmF0aXZlSW1hZ2VzKCk7CiAKLSAgICAvLyBJZiBudW1GcmFtZXMgaXMgemVybywgd2Uga25v
dyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2YWxpZCBkYXRhCisgICAgLy8g
SWYgZnJhbWVzSW1hZ2VzLnNpemUoKSBpcyB6ZXJvLCB3ZSBrbm93IGZvciBjZXJ0YWluIHRoaXMg
aW1hZ2UgZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEKICAgICAvLyBFdmVuIHRob3VnaCB0aGUgY2Fs
bCB0byBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSB3aWxsIGZhaWwgYW5kIHdlJ2xs
IGhhbmRsZSBpdCBncmFjZWZ1bGx5LAogICAgIC8vIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB0
aGF0IGNhbGwgd2lsbCBzcGFtIHRoZSBjb25zb2xlIHdpdGggYW4gZXJyb3IgbWVzc2FnZQotICAg
IGlmICghbnVtRnJhbWVzKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFZlY3RvcjxDR0ltYWdl
UmVmPiBpbWFnZXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZyYW1lczsgKytp
ICkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKS5n
ZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2UpCi0gICAgICAgICAgICBpbWFnZXMuYXBwZW5kKGNn
SW1hZ2UpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIG51bVZhbGlkRnJhbWVzID0gaW1hZ2VzLnNp
emUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwotICAgIFJldGFpblB0cjxDR0ltYWdlRGVzdGluYXRp
b25SZWY+IGRlc3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRo
RGF0YShkYXRhLmdldCgpLCBrVVRUeXBlVElGRiwgbnVtVmFsaWRGcmFtZXMsIDApKTsKKyAgICBS
ZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJ
bWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VUVHlwZVRJRkYsIG5h
dGl2ZUltYWdlcy5zaXplKCksIDApKTsKIAogICAgIGlmICghZGVzdGluYXRpb24pCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1WYWxpZEZyYW1lczsgKytpKQotICAgICAgICBDR0ltYWdlRGVzdGluYXRp
b25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgaW1hZ2VzW2ldLCAwKTsKKyAgICBmb3IgKGF1
dG8gbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCisgICAgICAgIENHSW1hZ2VEZXN0aW5hdGlv
bkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7CiAKICAg
ICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQppbmRleCAyMTZjZDA5M2YyNjQ2N2Ni
YTg4YTQzZjY5M2FiZjRjZjUxZGQxYTRkLi5kMTE0NTRiMDVlZjg4OTkzYTYyODkzODk2YmMwYzEx
NzI4YzVlZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCkBA
IC04Nyw3ICs4Nyw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVwZGF0ZVBs
YXRmb3JtTGF5ZXIoKSBjb25zdAogICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgbV9wcmV2aWV3SW1hZ2UgPSBpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpOwor
ICAgICAgICBtX3ByZXZpZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwogICAgICAgICBp
ZiAoIW1fcHJldmlld0ltYWdlKQogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDM2Y2Q2NTE2ZTgwZjE3
NDhiZmVhYjc3YTkzMDI3MWMxMjFkZTgwMTkuLjRiNGUzNzc5ZTk2Zjc4YzY1NDBhNTNjNDQ3OGMz
YmZkOTM1ZjUzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZUNHV2luLmNwcApAQCAtMTM2LDkgKzEzNiw5IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogICAg
IENHQ29udGV4dFNjYWxlQ1RNKGRyYXdDb250ZXh0LCAxLCAtMSk7CiAgICAgQ0dDb250ZXh0U2V0
RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoZHJh
d0NvbnRleHQsIHJlY3QpOwotICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5nZXRDR0ltYWdl
UmVmKCkpIHsKKyAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+bmF0aXZlSW1hZ2UoKSkgewog
ICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5kTW9kZU5v
cm1hbCk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4dCwgcmVjdCwgc3Jj
SW1hZ2UpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJlY3QsIHNy
Y0ltYWdlLmdldCgpKTsKICAgICB9CiAgICAgQ0dDb250ZXh0UmVsZWFzZShkcmF3Q29udGV4dCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IGI2NTlkNmRiZjlhZDY5OTljM2Fj
OTYyZGU5NTE1NzgwOTdlMWYzYjEuLjdjNWVkMjEwZGRiMmEzMmE3NjY2NzRjMTIwZDk5NGMyZmE0
N2U3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQpAQCAtMjA0LDcgKzIwNCw3IEBA
ICsgKENHSW1hZ2VSZWYpaW1hZ2VGb3JVUkw6KE5TVVJMICopdXJsCiAgICAgV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1hZ2U+KCpj
YWNoZWRSZXNvdXJjZSk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZS5oYXNJbWFnZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+Z2V0Q0dJ
bWFnZVJlZigpOworICAgIHJldHVybiBjYWNoZWRJbWFnZS5pbWFnZSgpLT5uYXRpdmVJbWFnZSgp
LmdldCgpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCmluZGV4IDBm
NmRlN2ExNDZhNjExYTUyYWExZTUzOTAxOWZhNmMxYzQ2NzI1YWUuLjMwNTYzMzZjYjY2ZmU0YWYx
OGJkYzUyOWFjYTJmOGZjODgxZGZlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKQEAgLTM3LDEyICszNywyMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIENHSW1hZ2VSZWYgV0tJY29uRGF0YWJhc2VUcnlH
ZXRDR0ltYWdlRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwgV0tVUkxS
ZWYgdXJsUmVmLCBXS1NpemUgc2l6ZSkKIHsKICAgICBJbWFnZSogaW1hZ2UgPSB0b0ltcGwoaWNv
bkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVybFJlZikpOwotICAg
IHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoSW50U2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUuaGVpZ2h0
KSkpIDogMDsKKyAgICByZXR1cm4gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VPZlNpemUoSW50
U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUu
aGVpZ2h0KSkpLmdldCgpIDogbnVsbHB0cjsKIH0KIAogQ0ZBcnJheVJlZiBXS0ljb25EYXRhYmFz
ZVRyeUNvcHlDR0ltYWdlQXJyYXlGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNl
UmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gdG9JbXBsKGljb25E
YXRhYmFzZVJlZiktPmltYWdlRm9yUGFnZVVSTCh0b1dURlN0cmluZyh1cmxSZWYpKTsKLSAgICBy
ZXR1cm4gaW1hZ2UgPyBpbWFnZS0+Z2V0Q0dJbWFnZUFycmF5KCkubGVha1JlZigpIDogMDsKKyAg
ICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gbmF0aXZl
SW1hZ2VzID0gaW1hZ2UtPmZyYW1lc05hdGl2ZUltYWdlcygpOworICAgIGlmICghbmF0aXZlSW1h
Z2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgQ0ZNdXRhYmxl
QXJyYXlSZWYgYXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShudWxscHRyLCBuYXRpdmVJbWFn
ZXMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKKyAgICBmb3IgKGF1dG8gbmF0aXZl
SW1hZ2UgOiBuYXRpdmVJbWFnZXMpCisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwg
bmF0aXZlSW1hZ2UuZ2V0KCkpOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRkFycmF5
UmVmPihDRlJldGFpbihhcnJheSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDYyNjBkZTQ2
MTFhOGVhZGE1Y2MxNTI5YzEzM2M3NTFjNjgwNjNmYzUuLmM1ZTM1NzJhNDc2NDdkYzJiNmIwMDIz
MmU1ZDk1NzYxZWJiMDZkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC00MDc4LDcgKzQwNzgsNyBA
QCAtIChVSUltYWdlICopX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJldmlld0l0ZW1Db250cm9s
bGVyOihVSVByZXZpZXdJdGVtQ29udHJvbAogewogICAgIGlmICghX3Bvc2l0aW9uSW5mb3JtYXRp
b24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6X3Bvc2l0aW9uSW5m
b3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPmdldENHSW1hZ2VSZWYoKV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
X3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5hdGl2ZUlt
YWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKV9wcmVzZW50YXRp
b25SZWN0c0ZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2xsZXIg
Kiljb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggOWEzM2Y3Y2M3ZGM3YzdkNzJmOWRhNzQzMDk4YjdkYmNhODI0MDlj
Zi4uYTUzMjUxMDY3OGI5ZjUzNTE0NThhMzhhOWY0MjMzNzQ3ZDAzNWY1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTcyNyw2
OSArMTcyNyw2IEBAIHZvaWQgUGx1Z2luVmlldzo6d2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlk
Q2hhbmdlKGJvb2wgaXNWaXNpYmxlLCB1aW50NjRfdCB3aW5kCiB9CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKENPQ09BKQotc3RhdGljIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKEJpdG1hcEltYWdl
KiBiaXRtYXApCi17Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1hcC0+Z2V0Q0dJbWFnZVJl
ZigpOwotICAgIEFTU0VSVChDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChpbWFnZSkgPT0gOCk7
Ci0KLSAgICBDR0JpdG1hcEluZm8gaW1hZ2VJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oaW1h
Z2UpOwotICAgIGlmICghKGltYWdlSW5mbyAmIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlKSB8
fCAoaW1hZ2VJbmZvICYga0NHQml0bWFwQWxwaGFJbmZvTWFzaykgIT0ga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRGaXJzdCkgewotICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgYmVpbmcgYWJs
ZSB0byBoYW5kbGUgb3RoZXIgcGl4ZWwgZm9ybWF0cy4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzaXplX3Qgd2lkdGgg
PSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpOwotICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0
SGVpZ2h0KGltYWdlKTsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQ
ZXJSb3coaW1hZ2UpOwotCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcHJvdmlkZXIgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihpbWFnZSkp
KTsKLSAgICBjb25zdCBVSW50OCogZGF0YSA9IENGRGF0YUdldEJ5dGVQdHIocHJvdmlkZXIuZ2V0
KCkpOwotCi0gICAgLy8gT3ZlcmxheSBhIGdyaWQgb2Ygc2FtcGxpbmcgZG90cyBvbiB0b3Agb2Yg
YSBncmF5c2NhbGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2UuCi0gICAgLy8gRm9yIHRoZSBpbnRlcmlv
ciBwb2ludHMsIGNhbGN1bGF0ZSB0aGUgZGlmZmVyZW5jZSBpbiBsdW1pbmFuY2UgYW1vbmcgdGhl
IHNhbXBsZSBwb2ludAotICAgIC8vIGFuZCBpdHMgc3Vycm91bmRzIHBvaW50cywgc2NhbGVkIGJ5
IHRyYW5zcGFyZW5jeS4KLSAgICBjb25zdCB1bnNpZ25lZCBzYW1wbGVSb3dzID0gNzsKLSAgICBj
b25zdCB1bnNpZ25lZCBzYW1wbGVDb2xzID0gNzsKLSAgICAvLyBGSVhNRTogUmVmaW5lIHRoZSBw
cm9wZXIgbnVtYmVyIG9mIHNhbXBsZXMsIGFuZCBhY2NvbW1vZGF0ZSBkaWZmZXJlbnQgYXNwZWN0
IHJhdGlvcy4KLSAgICBpZiAod2lkdGggPCBzYW1wbGVDb2xzIHx8IGhlaWdodCA8IHNhbXBsZVJv
d3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0
IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgotICAgIGNvbnN0IGZsb2F0
IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29s
cyAtIDEpOwotICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0
PihoZWlnaHQgLSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7Ci0gICAgZmxvYXQgc2FtcGxlc1tzYW1w
bGVSb3dzXVtzYW1wbGVDb2xzXTsKLQotICAgIC8vIEZpbmQgdGhlIGx1bWluYW5jZSBvZiB0aGUg
c2FtcGxlIHBvaW50cy4KLSAgICBmbG9hdCB5ID0gMDsKLSAgICBjb25zdCBVSW50OCogcm93ID0g
ZGF0YTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2FtcGxlUm93czsgKytpKSB7Ci0g
ICAgICAgIGZsb2F0IHggPSAwOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc2Ft
cGxlQ29sczsgKytqKSB7Ci0gICAgICAgICAgICBjb25zdCBVSW50OCogcDAgPSByb3cgKyAoc3Rh
dGljX2Nhc3Q8aW50Pih4ICsgLjUpKSAqIDQ7Ci0gICAgICAgICAgICAvLyBSIEcgQiBBCi0gICAg
ICAgICAgICBzYW1wbGVzW2ldW2pdID0gKDAuMjEyNSAqICpwMCArIDAuNzE1NCAqICoocDArMSkg
KyAwLjA3MjEgKiAqKHAwKzIpKSAqICoocDArMykgLyAyNTU7Ci0gICAgICAgICAgICB4ICs9IHN0
cmlkZVdpZHRoOwotICAgICAgICB9Ci0gICAgICAgIHkgKz0gc3RyaWRlSGVpZ2h0OwotICAgICAg
ICByb3cgPSBkYXRhICsgKHN0YXRpY19jYXN0PGludD4oeSArIC41KSkgKiBieXRlc1BlclJvdzsK
LSAgICB9Ci0KLSAgICAvLyBEZXRlcm1pbmUgdGhlIGltYWdlIHNjb3JlLgotICAgIGZsb2F0IGFj
Y3VtU2NvcmUgPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBzYW1wbGVSb3dzIC0g
MTsgKytpKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDE7IGogPCBzYW1wbGVDb2xzIC0g
MTsgKytqKSB7Ci0gICAgICAgICAgICBmbG9hdCBkaWZmID0gc2FtcGxlc1tpIC0gMV1bal0gKyBz
YW1wbGVzW2kgKyAxXVtqXSArIHNhbXBsZXNbaV1baiAtIDFdICsgc2FtcGxlc1tpXVtqICsgMV0g
LSA0ICogc2FtcGxlc1tpXVtqXTsKLSAgICAgICAgICAgIGFjY3VtU2NvcmUgKz0gZGlmZiAqIGRp
ZmY7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBUaGUgc2NvcmUgZm9yIGEgZ2l2ZW4gc2Ft
cGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgotICAgIHJldHVybiBh
Y2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxlQ29scyAtIDIpOwot
fQotI2VuZGlmCi0KIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmVkKCkK
IHsKICNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQpAQCAt
MTgwOSw3ICsxNzQ2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmly
ZWQoKQogCiAgICAgICAgIGlmIChzbmFwc2hvdEltYWdlKSB7CiAjaWYgRU5BQkxFKFBSSU1BUllf
U05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAgICAgICAgICAgIGJvb2wgc25hcHNob3RJ
c0FsbW9zdFNvbGlkQ29sb3IgPSBpc0FsbW9zdFNvbGlkQ29sb3IoZG93bmNhc3Q8Qml0bWFwSW1h
Z2U+KHNuYXBzaG90SW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIGJvb2wgc25hcHNob3RJc0Fs
bW9zdFNvbGlkQ29sb3IgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PEJpdG1hcEltYWdlPihzbmFwc2hv
dEltYWdlKS0+aXNBbG1vc3RTb2xpZENvbG9yKCk7CiAgICAgICAgICAgICBzbmFwc2hvdEZvdW5k
ID0gIXNuYXBzaG90SXNBbG1vc3RTb2xpZENvbG9yOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282737</attachid>
            <date>2016-07-04 17:12:04 -0700</date>
            <delta_ts>2016-07-04 17:43:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160704171146.patch</filename>
            <type>text/plain</type>
            <size>98088</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTUyOGVmNTIxY2FiOGVm
YmI5NDc1YjQxYzg1Njc0MWE0ZWE2NDE5My4uNmIxNDlhZTUxZWRjNGVkZWM2ODdmZWZkMjJiOTEz
NGU1N2U3ZjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxNi0wNi0yNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIFJlbmFt
ZSBGcmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IEltYWdlRnJhbWVEYXRhIHRvIGEgc2VwYXJhdGUgZmlsZSBzbyBpdCBjYW4gYmUgY2FjaGVkIGJ5
IEltYWdlU291cmNlCisgICAgICAgIGFuZCB3aWxsIHN0aWxsIGJlIGNvbnN1bWVkIGJ5IEJpdG1h
cEltYWdlLiBNYWtlIHRoZSBkYXRhIG1lbWJlcnMgb2YgSW1hZ2VGcmFtZURhdGEKKyAgICAgICAg
YmUgcHJpdmF0ZSBhbmQgYWRkIGdldHRlcnMgdG8gcmV0dXJuIHRoZWlyIHZhbHVlcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdl
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpm
cmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJh
bWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNp
bmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNB
bG1vc3RTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6dXNlZEZyYW1lQnl0ZXMpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZURhdGFBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lt
YWdlRnJhbWVEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6On5J
bWFnZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xlYXJT
dWJJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmlzQWxtb3N0U29saWRDb2xvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW1hZ2VGcmFtZURhdGEuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWVEYXRhOjppc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpmcmFtZUJ5
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OnN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZURhdGE6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aGFzSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc01ldGFkYXRhKToKKwor
MjAxNi0wNi0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgor
CisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBl
ciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyByZWZhY3RvcmluZyBpcyB0byBt
b3ZlIHRoZSBwbGF0Zm9ybSBpbWFnZSBkZXBlbmRlbnQKKyAgICAgICAgY29kZSBmcm9tIEJpdG1h
cEltYWdlIHRvIFBsYXRmb3JtSW1hZ2UuIFBsYXRmb3JtSW1hZ2UgaXMgcmVzcG9uc2libGUgb2Yg
CisgICAgICAgIGRyYXdpbmcgdGhlIGltYWdlIGFuZCBhbnN3ZXJpbmcgTmF0aXZlSW1hZ2VQdHIg
cXVlc3Rpb25zIHdoZW4gYW4gSW1hZ2VEZWNvZGVyCisgICAgICAgIGlzIG5vdCBhdmFpbGFibGUu
IEFwYXJ0IGZyb20gZHJhd2luZyB0aGUgaW1hZ2UsIHRoZSBxdWVyeSBmdW5jdGlvbnMgd2lsbCBi
ZQorICAgICAgICBjYWxsZWQgb25seSB3aGVuIGNvbnN0cnVjdGluZyBhIEZyYW1lRGF0YSBzbyB3
ZSB3aWxsIGtlZXAgZXZlcnl0aGluZyBhcyBhCisgICAgICAgIE5hdGl2ZUltYWdlUHRyLiBCdXQg
d2Ugd2lsbCBjYXN0IHRoZSBOYXRpdmVJbWFnZVB0ciB0byBQbGF0Zm9ybUltYWdlIHdoZW4KKyAg
ICAgICAgYSBwbGF0Zm9ybSBkZXBlbmRlbnQgZnVuY3Rpb24gaXMgbmVlZGVkLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAtLSBDb2RlIHJlZmFjdG9yaW5nLCBubyBiZWhhdmlvciBjaGFuZ2UuCisK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
TWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NLm1tOgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFu
ZFJlY3RzOl0pOgorICAgICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06Cisg
ICAgICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGljYXRv
cjptYXJnaW46b2Zmc2V0Ol0pOgorICAgICAgICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1h
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJ
bWFnZU9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lc05h
dGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2luZ2xlUGl4ZWxT
b2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppc0FsbW9zdFNvbGlk
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZURhdGE6OkZyYW1lRGF0YSk6CisgICAgICAgIG1faGFzQWxwaGEgY2FuIGJlIGluaXRpYWxpemVk
IHdpdGggZmFsc2UgYmVjYXVzZSBpdCBpcyBhY2Nlc3NlZCBvbmx5IGluCisgICAgICAgIEJpdG1h
cEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleCgpIGFuZCBpdCBpcyBndWFyZGVkIGJ5IG1faGF2
ZU1ldGFkYXRhLgorICAgICAgICBCb3RoIG1faGF2ZU1ldGFkYXRhIGFuZCBtX2hhc0FscGhhIGFy
ZSBzZXQgaW4gQml0bWFwSW1hZ2UgY29uc3RydWN0b3IKKyAgICAgICAgYW5kIGluIEJpdG1hcElt
YWdlOjpjYWNoZUZyYW1lKCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1l
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2
ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OlBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZTo6aXNOaWwpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2dJbWFnZVJl
Zik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TW9kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJT
dWJJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFw
SW1hZ2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpjbGVhclN1YkltYWdl
cyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlOjppc0FsbW9zdFNvbGlkQ29sb3IpOiBNb3ZlZCBmcm9tIFBsdWdpblZpZXcuY3Bw
IHNpbmNlIFBsYXRmb3JtSW1hZ2UgaXMgd2hhdCB0aGlzIGZ1bmN0aW9uIGJlbG9uZ3MgdG8uCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKTogUmV0dXJu
cyB0aGUgc3ViLXNhbXBsaW5nIHNjYWxlIGJhc2VkIG9uIHRoZSBjb250ZXh0IHNjYWxpbmcuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAg
ICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisKIDIwMTYtMDYtMjQgIEJldGggRGFraW4gIDxi
ZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEluY2x1ZGUgZW5jbG9zaW5nTGlzdFR5cGUgaW4g
RWRpdG9yU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0ZDc0NWVkY2EyMjIwYjMzMTEwODQ4NjAx
Yjk3MTBhMjJjMjQ5OWU3Li42ZWU1MmNmNjVhYTllY2UzMWVkOTA0ZWU5NDc5NWM4NjhmOTYxOGRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDYtMjQgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBJbnRyb2R1Y2Ug
UGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9yIE5hdGl2ZUltYWdlUHRy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2Mv
V2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorCiAyMDE2
LTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFBsYXli
YWNrIGNvbnRyb2xzIHJlZmVyIHRvIHdyb25nIGVsZW1lbnQgd2hlbiBwbGF5aW5nIG11bHRpcGxl
IGl0ZW1zIGluIGEgcGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiMzU0OTA3OTMyNmYzMmZmNGU3MGVkY2Ix
MDQyYjJmMWVlMjg2NDM0Li44NjRjNDIzNGQyYjcxNWUxOWMxM2ZhMTgzNmJkMzI5NDBjNTc2OWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDYtMjQgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgUGxhdGZv
cm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9yIE5hdGl2ZUltYWdlUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg2ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcDoKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5
R2V0Q0dJbWFnZUZvclVSTCk6CisgICAgICAgIChXS0ljb25EYXRhYmFzZVRyeUNvcHlDR0ltYWdl
QXJyYXlGb3JVUkwpOgorICAgICAgICBJdCB3YXMgdGhlIG9ubHkgcGxhY2UgaW4gdGhlIGNvZGUg
d2hpY2ggdXNlcyBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KCkuCisgICAgICAgIENhbGwg
Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcygpIGluc3RlYWQgYW5kIGZvcm0gdGhlIHJl
dHVybmVkCisgICAgICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gYnVpbGQgdGhlIENGQXJyYXlS
ZWYuCisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVzZW50YXRpb25TbmFwc2hv
dEZvclByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpblNu
YXBzaG90VGltZXJGaXJlZCk6CisgICAgICAgIAorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNv
bGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICBNb3ZlIHRoZSBzdGF0aWMgZnVuY3Rpb24gaXNB
bG1vc3RTb2xpZENvbG9yIHRvIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpLgor
CiAyMDE2LTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFZpbWVvLmNvbSB2aWRlb3MgZG8gbm90IGdldCBwbGF5YmFjayBjb250cm9scwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA3NDY4OTU5MWZkODY5ODMyYzE2NmU3YjljNWVmZGNlODE2ODZiZmFlLi41
MmQ4NjZkODExMzU3YzEyN2ZjNDQxMGUxM2Q3YTI3NDhjMjIzODZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjIzMCw2ICsyMjMwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0lTT1ZUVEN1ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9y
aWVudGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVX
aW4uY21ha2UKaW5kZXggNWZmOTkxZmY3ZGEzMDhiYjkxODJlY2UzYmYxMjE3MzBhNTQ4ZDI4Ny4u
YmFlMzFlYWY4NmU3ZmNhOTA1ODI1MDkyYWEzOGE3OGMxMWU0MjIwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC01NSw3ICs1NSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdM
YXllcldpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVy
VHJlZUhvc3QuY3BwCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0
UmVjdENHLmNwcApAQCAtNzUsNiArNzQsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCAzMjlhMTYwNzkxODk4NjEwM2M2MGUwYjYwZDQwY2VlMGVm
NmJjNjgxLi5jZGZkOWFhYmMwY2VkYTVlMzFmYzc3Yzg1MjI0ZmU0ODdkODRiOWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTIyLDcgKzEyMiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKIAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwu
Y3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKQEAgLTEzNCw2ICsxMzMsNyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8u
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9QbGF0Zm9ybVBhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UcmFu
c2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA3
NGU1MTk1YWIwOTQ5NzMyMGZkOWI2YjRlZjk2YjZmZjRlM2IyNDYyLi40OTBiZTQxMWJjNWIyMzJj
MmMwMTgzZWJiYzIxNjg4NTE3ODM1YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
OTgsNyArOTgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcApAQCAtMTEyLDYgKzExMSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0
ckNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0
cml4Q2Fpcm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNiZjgwZjVkYTdmZWQ5
MzU5NDhkZmRlYzc5MTI3Y2U2NTFkZTQ2ZTMuLjg2YjZiMzRhM2Y2NDhlN2MwZTE1YmVjOTVmY2Rh
MDMwN2ExZGEyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zOTUsNyArMzk1LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9CaXRtYXBJbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcApAQCAtNDE1LDYgKzQxNCw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
bGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJv
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQppbmRleCAyYzU1
M2IwNTUxZGFkNjlhYTE5OWQ5NjBmNTUyMzQzZDkyMGYwN2IzLi5jMjAzMDkxYTkzOWM2ZjdhMjJj
ZmJmODlmODJiMGMzMWVkOTJiYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVdpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21h
a2UKQEAgLTIxLDcgKzIxLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtRGlzcGxheS5jcHAKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdl
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMzQsNiArMzMsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRo
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybVBhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIwYzE2NWM1NTQ5MThjM2E0M2Ni
YmZhMDNhMjAwYTNlNGM5MTcwMjMuLjhlOTU3MDllNzUxOWMyZjVmYTliY2ZkMmU0Y2EzODdhNzA5
MjUwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE0ODEsNyArMTQ4MSw3IEBACiAJCTM3NUNEMjMyMTE5RDQzQzgwMEEyQTg1
OSAvKiBIeXBoZW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi87IH07
CiAJCTM3NkRDQ0UxMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVG
QyAvKiBUZXh0UnVuLmNwcCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92
ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVx
dWVzdENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNF
OUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLzsgfTsKKwkJMzc3QTNBOTAxNUVGQ0U5
QjAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZv
cm1JbWFnZUNHLmNwcCAqLzsgfTsKIAkJMzc5MTlDMjMwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0
aW9uSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICov
OyB9OwogCQkzNzkxOUMyNDBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MTlDMjIwQjdE
MTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9ICgpOyB9OyB9OwogCQkzNzkyOTE3QTE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlh
bEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzI4LDYgKzIzMjgsOSBAQAog
CQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1
M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVy
Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1
Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1
Qjg3RUQxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUg
LyogSW1hZ2VEZWNvZGVyQ0cuaCAqLzsgfTsKKwkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8q
IFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVDQkE2QTExRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFn
ZUZyYW1lRGF0YS5jcHAgKi87IH07CisJCTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFn
ZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTVDQkE2QTAxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcx
OTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVk
Q2xpY2suaCAqLzsgfTsKIAkJNTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENs
aWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MkE3RjIyMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4
MDM3MTYxMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyog
Q2xpcFJlY3QuY3BwICovOyB9OwpAQCAtOTA1Nyw3ICs5MDYwLDcgQEAKIAkJMzc2RENDRTAxM0I0
Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzJC
MDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNlcnZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRl
c3RSZXF1ZXN0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJs
YXBUZXN0UmVxdWVzdENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzNzdB
M0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRtYXBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VD
Ry5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUltYWdl
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMTBCN0QxODg2MDBB
NTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVk
ZW50aWFsQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFs
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk5Miw2ICs5OTk1LDkgQEAK
IAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdl
RGVjb2RlckNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rl
ckNHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1MUQwMjc0NDQwMEI5
RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8q
IEltYWdlRnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEltYWdlRnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2
QTAxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0
ZWRDbGljay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGlj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYx
NDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjIwMzEsNyArMjIwMzcsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3N0EzQThGMTVF
RkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5
NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0UmVjdENHLmNwcCAqLywKQEAgLTIyMDU4LDYgKzIyMDYzLDcgQEAKIAkJCQlBODBB
MzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBC
MDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1Mzcw
QjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkzNzdBM0E4RjE1
RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0MEZCODE2
NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZD
NDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJ
CQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAg
Ki8sCkBAIC0yMjIwOSw2ICsyMjIxNSw4IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5
IC8qIEltYWdlQnVmZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyog
SW1hZ2VCdWZmZXIuaCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VC
dWZmZXJEYXRhLmggKi8sCisJCQkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJh
bWVEYXRhLmNwcCAqLywKKwkJCQk1NUNCQTZBMDFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFt
ZURhdGEuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oICovLAogCQkJCUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9u
LmNwcCAqLywKIAkJCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlv
bi5oICovLApAQCAtMjIyNTgsNiArMjIyNjYsNyBAQAogCQkJCTJENTAwMkZBMUI1NkQ3OTkwMDIw
QUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggKi8sCiAJCQkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5
IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0
ZXJuLmggKi8sCisJCQkJNTU3NEYwODUxRDAyNzQ0NDAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2Uu
aCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICov
LAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0
VHJhY2suaCAqLywKQEAgLTI2MDE4LDYgKzI2MDI3LDcgQEAKIAkJCQk4NUU3MTFCOTBBQzVENTM1
MDA1MzI3MEYgLyogRE9NSFRNTE1hcEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM1MTU3OUYwQzAzQkJEMzAwOEJCMEVFIC8qIERPTUhUTUxNYXJxdWVlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1MTU2RUEwQzAzQjc0MTAwOEJCMEVFIC8qIERPTUhUTUxNYXJx
dWVlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTc0RjA4NzFEMDI3OTA5
MDBCOUYxNEMgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFQzY2NTUx
QzgyRDA0MTAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJERUM2NjUxMUM4MkQwMTYwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFFbGVtZW50SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QkE0RDEzMEFBNjg4NjgwMDg4MDUyRCAvKiBET01I
VE1MTWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0NTgsNiArMjY0NjgsNyBAQAog
CQkJCUQzNTlENzhBMTI5Q0EyNzEwMDA2RTVEMiAvKiBIVE1MRGV0YWlsc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4RUE3OUZBMEExOTE2REYwMEE4RUY1RiAvKiBIVE1MRGlyZWN0b3J5
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdDQjcwQTE5MkI5QzAwQThFRjVGIC8q
IEhUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUNCQTZBMjFEMURGMkUxMDA0
NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3OUY3MEEx
OTE2REYwMEE4RUY1RiAvKiBIVE1MRExpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0YxOThFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzdCMzg2NzEyMjg4M0U5MDBCODFGRjggLyogSFRNTERvY3VtZW50UGFyc2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NDEzLDcgKzI5NDI0LDcgQEAKIAkJCQlGREM1NEYwNDEzOTlCMERB
MDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMx
NjAyNjEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4OTk0MzI5MEI0MjMzODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZv
cm1JbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFG
NyAvKiBCbG9iLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFREVGMUYzMTIxQjBFRkMwMDcyNkRC
MiAvKiBCbG9iRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUQzMUNEQzE5MTk2MDIwMDAx
MDA1QTMgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3
NzUsNiArMjk3ODYsNyBAQAogCQkJCTJFMkQ5OUU4MTBFMkJDMUMwMDQ5NjMzNyAvKiBET01CbG9i
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlDRDgwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNE
QVRBU2VjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QUNBOTg3MEE5QjUyMDMwMDY3MUU5
MCAvKiBET01DaGFyYWN0ZXJEYXRhLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTVDQkE2QTExRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1
MDg5Q0RBMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTc4RDA3QkUxNDVBMEY2QzAwOTY5MDhEIC8qIERPTUNvcmVFeGNlcHRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODU4QzM4QTYwQUE4RjIwNDAwQjE4N0E0IC8qIERPTUNvdW50ZXIubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggNDAxMWVh
M2ZkOGMwNDY5NzRjNTVkNDhlMzk2ZjFiODNiODFmMzM1ZC4uYTVhYzRmMDVhZTMzOWE4ZDY0NzA2
YzEwZmMwZjdhZjQwNDI1NjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAg
LTYwNiw3ICs2MDYsNyBAQCAtICh2b2lkKWdldFByZXZpZXdTbmFwc2hvdEltYWdlOihDR0ltYWdl
UmVmKiljZ0ltYWdlIGFuZFJlY3RzOihOU0FycmF5ICoqKXJlY3RzCiAKICAgICBpZiAodGV4dElu
ZGljYXRvcikgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4dEluZGljYXRvci0+Y29u
dGVudEltYWdlKCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IChDR0ltYWdlUmVmKUNGQXV0b3Jl
bGVhc2UoQ0dJbWFnZVJldGFpbihpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpKSk7CisgICAgICAgICAg
ICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiByZWN0QXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCmluZGV4IDM2NGE5YTg3Y2U2ZjA2NjM5NDhiODg0NmU4ZTJj
ZTZkMTkwZjI0ODkuLmE3NGRhODVhY2VjYTNjNjY5OGRkMTU2YWIzMWE2Yzk3MWEzNTRlNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQpAQCAt
MTYyLDkgKzE2Miw5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJh
bWUgdGV4dEluZGljYXRvcjooUGFzc1JlZlB0cjxUZXh0SW5kaWNhCiAgICAgY29udGVudHNJbWFn
ZUxvZ2ljYWxTaXplLnNjYWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVG
YWN0b3IoKSk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CiAgICAg
aWYgKGluZGljYXRvcldhbnRzQ29udGVudENyb3NzZmFkZSgqX3RleHRJbmRpY2F0b3IpKQotICAg
ICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZVdpdGhIaWdo
bGlnaHQoKS0+Z2V0Q0dJbWFnZVJlZigpOworICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJ
bmRpY2F0b3ItPmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQoKS0+bmF0aXZlSW1hZ2UoKTsKICAg
ICBlbHNlCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudElt
YWdlKCktPmdldENHSW1hZ2VSZWYoKTsKKyAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5k
aWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKTsKIAogICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gYm91bmNlTGF5ZXJzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENBS2V5
ZnJhbWVBbmltYXRpb24+IGNyZWF0ZUJvdW5jZUFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJh
dAogc3RhdGljIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcmVhdGVDb250ZW50Q3Jvc3Nm
YWRlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uLCBUZXh0SW5kaWNhdG9yJiB0ZXh0
SW5kaWNhdG9yKQogewogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcm9zc2ZhZGVB
bmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAImNvbnRl
bnRzIl07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5k
aWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZTooaWQpY29u
dGVudHNJbWFnZS5nZXQoKV07CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRGaWxsTW9kZTpr
Q0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldFJlbW92ZWRP
bkNvbXBsZXRpb246Tk9dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCmluZGV4IDA2NzZjZTA3MjUwNzZiYjk1Y2NkMjZjNWMxYTUyOGQxNjNh
NDY1MmEuLmU4NjI2NDFjYzE3NmJhMzRjNTg1OTA1ZDEzNWQ2M2U4MjJiZjllNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTY4
LDE1ICs2OCwxMyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBp
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRy
dWUpCiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAoZmFsc2UpCiB7Cisg
ICAgbV9mcmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKyAgICBtX2ZyYW1lcy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShpbWFnZSkpOworICAgIAogICAgIC8vIFNpbmNlIHdlIGRvbid0
IGhhdmUgYSBkZWNvZGVyLCB3ZSBjYW4ndCBmaWd1cmUgb3V0IHRoZSBpbWFnZSBvcmllbnRhdGlv
bi4KICAgICAvLyBTZXQgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uIHRvIGJlIHRoZSBzYW1l
IGFzIG1fc2l6ZSBzbyBpdCdzIG5vdCAweDAuCi0gICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uID0gbV9zaXplID0gTmF0aXZlSW1hZ2U6OnNpemUoaW1hZ2UpOworICAgIG1fc2l6ZVJlc3Bl
Y3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZSA9IG1fZnJhbWVzWzBdLnNpemUoKTsKICAgICBtX2Rl
Y29kZWRTaXplID0gbV9zaXplLmFyZWEoKSAqIDQ7Ci0gICAgCi0gICAgbV9mcmFtZXMuZ3Jvdygx
KTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gTmF0aXZlSW1hZ2U6Omhhc0FscGhhKGlt
YWdlKTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0gICAgbV9mcmFt
ZXNbMF0ubV9pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOwogfQogCiBCaXRtYXBJbWFnZTo6fkJpdG1h
cEltYWdlKCkKQEAgLTEwNSw3ICsxMDMsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdlKCk7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTEyNSw5
ICsxMjMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsKQogICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBmcmFtZSBpc24ndCBhY3R1YWxseSBj
aGFuZ2luZyAod2UncmUganVzdCB0cnlpbmcgdG8KICAgICAgICAgLy8gc2F2ZSB0aGUgbWVtb3J5
IGZvciB0aGUgZnJhbWVidWZmZXIgZGF0YSksIHNvIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIKICAg
ICAgICAgLy8gdGhlIG1ldGFkYXRhLgotICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9m
cmFtZXNbaV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoZmFs
c2UpKQotICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gZnJhbWVCeXRlczsKKyAgICAg
ICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gbV9mcmFtZXNbaV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6
OkNhY2hpbmc6Ok1ldGFkYXRhKTsKICAgICB9CiAKICAgICBtX3NvdXJjZS5jbGVhcihkZXN0cm95
QWxsLCBjbGVhckJlZm9yZUZyYW1lLCBkYXRhKCksIG1fYWxsRGF0YVJlY2VpdmVkKTsKQEAgLTE1
MCw4ICsxNDYsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vz
c2FyeShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGFs
bEZyYW1lQnl0ZXMgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGFsbEZyYW1lQnl0ZXMgKz0gbV9mcmFtZXNbaV0udXNlZEZyYW1l
Qnl0ZXMoKTsKKyAgICBmb3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpCisgICAgICAgIGFsbEZy
YW1lQnl0ZXMgKz0gZnJhbWUuZnJhbWVCeXRlcygpOwogCiAgICAgaWYgKGFsbEZyYW1lQnl0ZXMg
PiBsYXJnZUFuaW1hdGlvbkN1dG9mZikgewogICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1h
Z2UgJXAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkgZGVzdHJveWluZ0RhdGE6IGFsbEZy
YW1lQnl0ZXM9JXUgY3V0b2ZmPSV1IiwgdGhpcywgYWxsRnJhbWVCeXRlcywgbGFyZ2VBbmltYXRp
b25DdXRvZmYpOwpAQCAtMTc3LDcgKzE3Myw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lN
ZXRhZGF0YUFuZE5vdGlmeSh1bnNpZ25lZCBmcmFtZUJ5dGVzQ2xlYXJlZCwgQ2xlYXJlZFNvCiAg
ICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKHRoaXMsIC1zYWZlQ2Fz
dDxpbnQ+KGZyYW1lQnl0ZXNDbGVhcmVkKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmNhY2hl
RnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIElt
YWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3ZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJh
bWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdl
RnJhbWVEYXRhOjpDYWNoaW5nIGNhY2hpbmcpCiB7CiAgICAgc2l6ZV90IG51bUZyYW1lcyA9IGZy
YW1lQ291bnQoKTsKICAgICBBU1NFUlQobV9kZWNvZGVkU2l6ZSA9PSAwIHx8IG51bUZyYW1lcyA+
IDEpOwpAQCAtMTg1LDI1ICsxODEsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBp
ZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51
bUZyYW1lcyk7CiAKLSAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFt
ZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICAgICAgbV9mcmFt
ZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgfQot
Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3NvdXJjZS5vcmllbnRhdGlv
bkF0SW5kZXgoaW5kZXgpOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSA9IHRy
dWU7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSA9IG1fc291cmNlLmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoaW5kZXgpOworICAgIG1fZnJhbWVzW2luZGV4XSA9IG1fc291cmNlLmNy
ZWF0ZUZyYW1lRGF0YUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGNhY2hpbmcpOwog
Ci0gICAgaWYgKHJlcGV0aXRpb25Db3VudChmYWxzZSkgIT0gY0FuaW1hdGlvbk5vbmUpCi0gICAg
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uID0gbV9zb3VyY2UuZnJhbWVEdXJhdGlvbkF0
SW5kZXgoaW5kZXgpOworICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBjYWNoZUZyYW1l
ICVsdSAoJXMldSBieXRlcywgY29tcGxldGUgJWQpIiwgdGhpcywgaW5kZXgsIGNhY2hpbmcgPT0g
SW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhID8gIm1ldGFkYXRhIG9ubHksICIgOiAi
IiwgbV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSwgbV9mcmFtZXNbaW5kZXhdLmlzQ29tcGxl
dGUoKSk7CiAKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYSA9IG1fc291cmNlLmZyYW1l
SGFzQWxwaGFBdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVz
ID0gbV9zb3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwot
Ci0gICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5
dGVzLCBjb21wbGV0ZSAlZCkiLCB0aGlzLCBpbmRleCwgZnJhbWVDYWNoaW5nID09IENhY2hlTWV0
YWRhdGFPbmx5ID8gIm1ldGFkYXRhIG9ubHksICIgOiAiIiwgbV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcywgbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSk7Ci0KLSAgICBpZiAobV9mcmFt
ZXNbaW5kZXhdLm1faW1hZ2UpIHsKLSAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZlQ2FzdDxp
bnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOworICAgIGlmIChtX2ZyYW1lc1tpbmRl
eF0uaGFzSW1hZ2UoKSkgeworICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4o
bV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0g
ZGVsdGFCeXRlczsKICAgICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJz
dW1lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVzZWQKICAgICAgICAgLy8gdG8gZGV0ZXJt
aW5lIGltYWdlIHByb3BlcnRpZXMuCkBAIC0yODgsMjEgKzI3MSwxOSBAQCBib29sIEJpdG1hcElt
YWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBmcmFtZSBhZmZl
Y3RlZCBieSBhcHBlbmRpbmcgbmV3IGRhdGEgaGVyZS4gVGh1cyB3ZSBoYXZlIHRvIGNsZWFyIGFs
bCB0aGUKICAgICAvLyBpbmNvbXBsZXRlIGZyYW1lcyB0byBiZSBzYWZlLgogICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNDbGVhcmVkID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJh
bWVzLnNpemUoKTsgKytpKSB7CisgICAgZm9yIChhdXRvJiBmcmFtZSA6IG1fZnJhbWVzKSB7CiAg
ICAgICAgIC8vIE5PVEU6IERvbid0IGNhbGwgZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgpIGhlcmUs
IHRoYXQgd2lsbCB0cnkgdG8KICAgICAgICAgLy8gZGVjb2RlIGFueSB1bmNhY2hlZCAoaS5lLiBu
ZXZlci1kZWNvZGVkIG9yCiAgICAgICAgIC8vIGNsZWFyZWQtb24tYS1wcmV2aW91cy1wYXNzKSBm
cmFtZXMhCi0gICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1l
Qnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXS5tX2hhdmVNZXRhZGF0YSAmJiAhbV9mcmFt
ZXNbaV0ubV9pc0NvbXBsZXRlKQotICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gKG1f
ZnJhbWVzW2ldLmNsZWFyKHRydWUpID8gZnJhbWVCeXRlcyA6IDApOworICAgICAgICBpZiAoZnJh
bWUuaGFzTWV0YWRhdGEoKSAmJiAhZnJhbWUuaXNDb21wbGV0ZSgpKQorICAgICAgICAgICAgZnJh
bWVCeXRlc0NsZWFyZWQgKz0gZnJhbWUuY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVt
cHR5KTsKICAgICB9CiAgICAgZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KGZyYW1lQnl0ZXNDbGVh
cmVkLCBDbGVhcmVkU291cmNlOjpObyk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhp
cyBkaWZmZXJlbnQgZm9yIGlPUz8KICAgICBpbnQgZGVsdGFCeXRlcyA9IDA7CiAgICAgaWYgKCFt
X2ZyYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFt
ZXMuc2l6ZSgpIC0gMV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbbV9mcmFt
ZXMuc2l6ZSgpIC0gMV0uY2xlYXIodHJ1ZSkpIHsKKyAgICAgICAgaWYgKGludCBieXRlcyA9IG1f
ZnJhbWVzW21fZnJhbWVzLnNpemUoKSAtIDFdLmNsZWFyKEltYWdlRnJhbWVEYXRhOjpDYWNoaW5n
OjpFbXB0eSkpIHsKICAgICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gYnl0ZXM7CiAgICAgICAgICAg
ICBkZWx0YUJ5dGVzICs9IG1fZGVjb2RlZFByb3BlcnRpZXNTaXplOwogICAgICAgICAgICAgbV9k
ZWNvZGVkUHJvcGVydGllc1NpemUgPSAwOwpAQCAtMzY2LDE1ICszNDcsMTUgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6aXNTaXplQXZhaWxhYmxlKCkKICAgICByZXR1cm4gbV9zaXplQXZhaWxhYmxlOwog
fQogCi1ib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwg
SW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQorYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJl
RnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nIGNhY2hp
bmcpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKQotICAgICAgICB8fCAoZnJh
bWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1f
aW1hZ2UpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYg
IW1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkpCi0gICAgICAgIGNhY2hlRnJhbWUoaW5k
ZXgsIDAsIGZyYW1lQ2FjaGluZyk7CisgICAgICAgIHx8IChjYWNoaW5nID09IEltYWdlRnJhbWVE
YXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlICYmICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1h
Z2UoKSkKKyAgICAgICAgfHwgKGNhY2hpbmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhICYmICFtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkpCisgICAgICAgIGNhY2hl
RnJhbWUoaW5kZXgsIDAsIGNhY2hpbmcpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zODgs
MTAgKzM2OSw5IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjCiAKICAgICAvLyBXZSBtYXkgaGF2
ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEgaGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGlj
aCBjYXNlIHdlIG5lZWQgdG8KICAgICAvLyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgot
ICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZl
bCkgeworICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0u
aGFzSW1hZ2UoKSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLnN1YnNhbXBs
aW5nTGV2ZWwoKSkgewogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQs
IGJ1dCBhdCB0b28gc21hbGwgYSBzaXplLCByZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KLSAg
ICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKLSAg
ICAgICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpOworICAgICAgICBpbnQgc2l6ZUNoYW5n
ZSA9IC1tX2ZyYW1lc1tpbmRleF0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5
KTsKICAgICAgICAgaW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogICAgICAgICBtX2RlY29kZWRT
aXplICs9IHNpemVDaGFuZ2U7CiAgICAgICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCkBAIC0zOTks
NDAgKzM3OSw3MiBAQCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TYwogICAgIH0KIAogICAgIC8vIElm
IHdlIGhhdmVuJ3QgZmV0Y2hlZCBhIGZyYW1lIHlldCwgZG8gc28uCi0gICAgaWYgKGluZGV4ID49
IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCi0gICAgICAgIGNh
Y2hlRnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7
CisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLmhh
c0ltYWdlKCkpCisgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIElt
YWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKTsKKworICAgIHJldHVybiBt
X2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKK30KKyAgICAKK05hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpuYXRpdmVJbWFnZSgpCit7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApOwor
fQorICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCit7CisgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwor
ICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBh
dXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBQ
bGF0Zm9ybUltYWdlKGltYWdlKS5zaXplKCkgPT0gc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBp
bWFnZTsKKyAgICB9CisgICAgCisgICAgLy8gRmFsbGJhY2sgdG8gdGhlIGZpcnN0IGZyYW1lIGlt
YWdlIGlmIHdlIGNhbid0IGZpbmQgdGhlIHJpZ2h0IHNpemUKKyAgICByZXR1cm4gZnJhbWVJbWFn
ZUF0SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCht
X2N1cnJlbnRGcmFtZSk7Cit9CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7
CitWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQoreworICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIHNpemVfdCBjb3Vu
dCA9IGZyYW1lQ291bnQoKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKSkK
KyAgICAgICAgICAgIGltYWdlcy5hcHBlbmQoaW1hZ2UpOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gaW1hZ2VzOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENh
Y2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIElt
YWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pc0NvbXBsZXRlOworICAgIHJldHVybiBt
X2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJ
c0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJ
c0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247Ci19
Ci0KLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpCi17Ci0gICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAg
ICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmR1cmF0aW9uKCk7CiB9CiAKIGJvb2wgQml0bWFwSW1h
Z2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3Vy
ZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3Vy
ZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2hhdmVN
ZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhOworICAg
IGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0dXJuIG1fZnJh
bWVzW2luZGV4XS5oYXNBbHBoYSgpOwogCiAgICAgcmV0dXJuIG1fc291cmNlLmZyYW1lSGFzQWxw
aGFBdEluZGV4KGluZGV4KTsKIH0KQEAgLTQ0NCwxMSArNDU2LDExIEBAIGJvb2wgQml0bWFwSW1h
Z2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiAKIEltYWdlT3JpZW50YXRpb24gQml0
bWFwSW1hZ2U6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBp
ZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBp
ZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpN
ZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CiAKLSAgICBpZiAo
bV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4gbV9mcmFtZXNb
aW5kZXhdLm1fb3JpZW50YXRpb247CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNNZXRhZGF0
YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm9yaWVudGF0aW9uKCk7CiAKICAg
ICByZXR1cm4gbV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKIH0KQEAgLTcwMCwx
NyArNzEyLDU2IEBAIENvbG9yIEJpdG1hcEltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKQog
ICAgICAgICByZXR1cm4gQ29sb3IoKTsKICAgICAKICAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgp
KTsKLSAgICBtX3NvbGlkQ29sb3IgPSBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9y
KG1fZnJhbWVzWzBdLm1faW1hZ2UuZ2V0KCkpOworICAgIG1fc29saWRDb2xvciA9IG1fZnJhbWVz
WzBdLnNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogICAgIAogICAgIEFTU0VSVChtX3NvbGlkQ29s
b3IpOwogICAgIHJldHVybiBtX3NvbGlkQ29sb3IudmFsdWUoKTsKIH0KICAgICAKK2Jvb2wgQml0
bWFwSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpCit7CisgICAgaWYgKGZyYW1lQ291bnQoKSAh
PSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZW5zdXJlRnJhbWVJc0Nh
Y2hlZCgwKSAmJiBtX2ZyYW1lc1swXS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKIGJv
b2wgQml0bWFwSW1hZ2U6OmNhbkFuaW1hdGUoKQogewogICAgIHJldHVybiBzaG91bGRBbmltYXRl
KCkgJiYgZnJhbWVDb3VudCgpID4gMTsKIH0KIAordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCit7CisgICAgaWYgKGRlc3RS
ZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisj
aWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXJ0QW5pbWF0aW9uKERvTm90Q2F0Y2hVcCk7CisjZWxz
ZQorICAgIHN0YXJ0QW5pbWF0aW9uKCk7CisjZW5kaWYKKyAgICAKKyAgICBDb2xvciBjb2xvciA9
IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBjb2xvciwgb3ApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdl
QXRJbmRleChtX2N1cnJlbnRGcmFtZSwgUGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZShj
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCkpOworICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3Mg
dG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbihkZXNjcmlwdGlvbi5pbWFnZU9y
aWVudGF0aW9uKCkpOworICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQorICAgICAgICBvcmllbnRhdGlvbiA9IGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICAKKyAgICBQbGF0Zm9y
bUltYWdlKGltYWdlKS5kcmF3KGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBtX3NpemUsIG9w
LCBtb2RlLCBvcmllbnRhdGlvbik7CisgICAgCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAg
ICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOworfQorICAgIAogdm9pZCBCaXRt
YXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKICAgICBJbWFnZTo6ZHVtcCh0
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApp
bmRleCAwNzU4OTI5Y2Q4N2ZhZGFjZjAyYjZlZDhlZWFmZTdkZWZkNjZmMGM1Li4yMjE4YzgyNGI1
MjhmZDYzOWJhYjEzOGRlY2M5OGI5ODE2YTE2ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTI4LDExICsyOCwxMyBAQAogI2lmbmRl
ZiBCaXRtYXBJbWFnZV9oCiAjZGVmaW5lIEJpdG1hcEltYWdlX2gKIAotI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIklt
YWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUg
IkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
SW1hZ2UuaCIKIAogI2lmIFVTRShDRykgfHwgVVNFKEFQUEtJVCkKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CkBAIC00Nyw2MyArNDksOSBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhC
SVRNQVA7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIHN0cnVjdCBGcmFtZURh
dGE7Ci19Ci0KLW5hbWVzcGFjZSBXVEYgewotICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRy
YWl0czxXZWJDb3JlOjpGcmFtZURhdGE+IDogcHVibGljIFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRz
IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSBm
YWxzZTsgLy8gTm90IGFsbCBGcmFtZURhdGEgbWVtYmVycyBpbml0aWFsaXplIHRvIDAuCi0gICAg
fTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaW1lcjsKIAotbmFtZXNwYWNl
IE5hdGl2ZUltYWdlIHsKLSAgICBJbnRTaXplIHNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsK
LSAgICBib29sIGhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci0gICAgQ29sb3Igc2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci19Ci0KLS8vID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gRnJhbWVEYXRh
IENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLQotc3RydWN0IEZyYW1lRGF0YSB7Ci1wdWJsaWM6Ci0gICAgRnJhbWVEYXRhKCkKLSAgICAg
ICAgOiBtX2hhdmVNZXRhZGF0YShmYWxzZSkKLSAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2Up
Ci0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+RnJhbWVE
YXRhKCkKLSAgICB7IAotICAgICAgICBjbGVhcih0cnVlKTsKLSAgICB9Ci0KLSAgICAvLyBDbGVh
ciB0aGUgY2FjaGVkIGltYWdlIGRhdGEgb24gdGhlIGZyYW1lLCBhbmQgKG9wdGlvbmFsbHkpIHRo
ZSBtZXRhZGF0YS4KLSAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlcmUgd2FzIGNhY2hlZCBpbWFn
ZSBkYXRhIHRvIGNsZWFyLgotICAgIGJvb2wgY2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKTsKLSAg
ICAKLSAgICB1bnNpZ25lZCB1c2VkRnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2Ug
PyBtX2ZyYW1lQnl0ZXMgOiAwOyB9Ci0KLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwotICAg
IEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9u
IH07Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07Ci0gICAg
ZmxvYXQgbV9kdXJhdGlvbiB7IDAgfTsKLSAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKLSAg
ICBib29sIG1faXNDb21wbGV0ZSA6IDE7Ci0gICAgYm9vbCBtX2hhc0FscGhhIDogMTsKLSAgICB1
bnNpZ25lZCBtX2ZyYW1lQnl0ZXMgeyAwIH07Ci19OwotCi0vLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyBCaXRtYXBJbWFnZSBDbGFzcwotLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCiBjbGFz
cyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdl
bmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTsK
QEAgLTE1NSwxMiArMTAzLDYgQEAgcHVibGljOgogICAgIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVz
ZW50YXRpb24oKSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYgVVNFKENHKQotICAgIFdFQkNPUkVf
RVhQT1JUIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIG92ZXJyaWRlOwotICAgIENHSW1hZ2VS
ZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgb3ZlcnJpZGU7Ci0jZW5k
aWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIGdldEhCSVRNQVAoSEJJVE1BUCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAsIGNvbnN0IEludFNpemUq
KSBvdmVycmlkZTsKQEAgLTE3NCw4ICsxMTYsMTMgQEAgcHVibGljOgogICAgIEV2YXNfT2JqZWN0
KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSBvdmVycmlkZTsKICNlbmRpZgogCisgICAgV0VCQ09SRV9F
WFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAg
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKICAg
ICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGUg
eyByZXR1cm4gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoY3VycmVudEZyYW1lKCkpOyB9CisgICAg
VmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKSBvdmVycmlkZTsKKyAg
ICAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWxtb3N0U29saWRDb2xvcigpOwogCiAgICAg
Ym9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZTsKIApAQCAtMjE1LDcg
KzE2Miw2IEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgZnJhbWVDb3VudCgpOwogCiAgICAgTmF0
aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25T
Y2FsZUhpbnQgPSAxKTsKLSAgICBOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdl
QXRJbmRleChzaXplX3QpOwogCiAgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
KTsKIApAQCAtMjI1LDExICsxNzEsMTAgQEAgcHJvdGVjdGVkOgogICAgIEltYWdlT3JpZW50YXRp
b24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KTsKIAogICAgIC8vIERlY29kZXMgYW5k
IGNhY2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBleGNlcHQgaW50ZXJuYWxseS4KLSAgICBl
bnVtIEltYWdlRnJhbWVDYWNoaW5nIHsgQ2FjaGVNZXRhZGF0YU9ubHksIENhY2hlTWV0YWRhdGFB
bmRGcmFtZSB9OwotICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICB2
b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1l
RGF0YTo6Q2FjaGluZyA9IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdl
KTsKIAogICAgIC8vIENhbGxlZCBiZWZvcmUgYWNjZXNzaW5nIG1fZnJhbWVzW2luZGV4XSBmb3Ig
aW5mbyB3aXRob3V0IGRlY29kaW5nLiBSZXR1cm5zIGZhbHNlIG9uIGluZGV4IG91dCBvZiBib3Vu
ZHMuCi0gICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFt
ZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIGJvb2wgZW5zdXJlRnJhbWVJ
c0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIHRvIGlu
dmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUg
b3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGlt
YWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0yOTIsNyArMjM3LDcgQEAgcHJpdmF0ZToKICAgICBt
dXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOwogCiAgICAgc2l6ZV90
IG1fY3VycmVudEZyYW1lIHsgMCB9OyAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUg
b2YgYW5pbWF0aW9uLgotICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBh
cnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJl
ZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgorICAgIFZlY3RvcjxJbWFnZUZyYW1l
RGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRo
ZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2Fj
aGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJhbWVUaW1lcjsKICAgICBpbnQg
bV9yZXBldGl0aW9uQ291bnQgeyBjQW5pbWF0aW9uTm9uZSB9OyAvLyBIb3cgbWFueSB0b3RhbCBh
bmltYXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRvLiBUaGlzIHdpbGwgYmUgY0FuaW1hdGlvbk5vbmUg
aWYgdGhpcyBpbWFnZSB0eXBlIGlzIGluY2FwYWJsZSBvZiBhbmltYXRpb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA3YTI5OTkyZjc3MTg4ZTAzODI4ZDgw
YTY1YjhiZTJjZDhkYzJkZTc2Li44ZTdiNTJiMWY0ZjMxYzc0YTNjYjJhMTMyMTVkYTc3YTJiMThj
MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTEzNyw4
ICsxMzcsMTEgQEAgcHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBS
b3VuZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCisgICAgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIE5h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmKSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9u
KCk7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gZnJhbWVzTmF0aXZlSW1h
Z2VzKCkgeyByZXR1cm4geyB9OyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFn
ZSBmb3JtYXRzLgogCkBAIC0xNTAsMTIgKzE1Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENG
RGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5k
aWYKIAotI2lmIFVTRShDRykKLSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0lt
YWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmly
dHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCBib29sIGdl
dEhCSVRNQVAoSEJJVE1BUCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0
SEJJVE1BUE9mU2l6ZShIQklUTUFQLCBjb25zdCBJbnRTaXplKikgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTE3OSw2ICsxNzYsOCBAQCBwdWJsaWM6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZp
cnR1YWwgYm9vbCBub3RTb2xpZENvbG9yKCkgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCisgICAg
CisgICAgdmlydHVhbCB2b2lkIGxheW91dElmTmVlZGVkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYjcwMjZmNjUy
ZDRjZmZjNjI1NDIyYmNhZGI3ZWJiNjZhNWE2N2E3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCkBAIC0wLDAgKzEs
MTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKworI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgor
I2Vsc2UKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiUGxh
dGZvcm1JbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ltYWdlRnJhbWVEYXRhOjpJ
bWFnZUZyYW1lRGF0YSgpCit7Cit9CisKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShO
YXRpdmVJbWFnZVB0ciYmIGltYWdlKQorICAgIDogbV9zdGF0dXMoU3RhdHVzOjpDb21wbGV0ZSkK
KyAgICAsIG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCit7CisgICAgbV9zaXplID0gUGxhdGZvcm1J
bWFnZShtX2ltYWdlKS5zaXplKCk7CisgICAgbV9oYXNBbHBoYSA9IFBsYXRmb3JtSW1hZ2UobV9p
bWFnZSkuaGFzQWxwaGEoKTsKK30KKworSW1hZ2VGcmFtZURhdGE6OkltYWdlRnJhbWVEYXRhKElt
YWdlRGVjb2RlciYgZGVjb2Rlciwgc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwsIENhY2hpbmcgZnJhbWVDYWNoaW5nKQoreworICAgIEFTU0VSVChmcmFtZUNh
Y2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1l
dGFkYXRhQW5kSW1hZ2UpOworICAgIAorICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6
SW1hZ2UgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpIHsKKyAg
ICAgICAgbV9pbWFnZSA9IGRlY29kZXIuY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgsIHN1
YnNhbXBsaW5nTGV2ZWwpOworICAgICAgICBtX3N1YnNhbXBsaW5nTGV2ZWwgPSBzdWJzYW1wbGlu
Z0xldmVsOworICAgIH0KKyAgICAKKyAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1l
dGFkYXRhIHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKSB7Cisg
ICAgICAgIG1fb3JpZW50YXRpb24gPSBkZWNvZGVyLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7
CisgICAgICAgIG1fc3RhdHVzID0gZGVjb2Rlci5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4
KSA/IFN0YXR1czo6Q29tcGxldGUgOiBTdGF0dXM6OlBhcnRpYWw7CisgICAgICAgIAorICAgICAg
ICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkKKyAgICAg
ICAgICAgIG1fZHVyYXRpb24gPSBkZWNvZGVyLmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsK
KyAgICAgICAgCisgICAgICAgIG1faGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdElu
ZGV4KGluZGV4KTsKKyAgICAgICAgbV9zaXplID0gZGVjb2Rlci5mcmFtZVNpemVBdEluZGV4KGlu
ZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICB9Cit9CisKK0ltYWdlRnJhbWVEYXRhOjp+SW1h
Z2VGcmFtZURhdGEoKQoreworICAgIGNsZWFyU3ViSW1hZ2VzKCk7Cit9CisKK3ZvaWQgSW1hZ2VG
cmFtZURhdGE6OmNsZWFyU3ViSW1hZ2VzKCkKK3sKKyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBQbGF0Zm9ybUltYWdlKG1faW1hZ2UpLmNsZWFyU3ViSW1hZ2Vz
KCk7Cit9CisKK3Vuc2lnbmVkIEltYWdlRnJhbWVEYXRhOjpjbGVhcihDYWNoaW5nIGZyYW1lQ2Fj
aGluZykKK3sKKyAgICBBU1NFUlQoZnJhbWVDYWNoaW5nID09IENhY2hpbmc6OkVtcHR5IHx8IGZy
YW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRhZGF0YSk7CisgICAgCisgICAgdW5zaWduZWQgZnJh
bWVCeXRlcyA9IHRoaXMtPmZyYW1lQnl0ZXMoKTsKKyAgICAKKyAgICBjbGVhclN1YkltYWdlcygp
OworICAgIAorICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6RW1wdHkpCisgICAgICAg
ICp0aGlzID0gSW1hZ2VGcmFtZURhdGEoKTsKKyAgICBlbHNlCisgICAgICAgIG1faW1hZ2UgPSBu
dWxscHRyOworICAgIAorICAgIHJldHVybiBmcmFtZUJ5dGVzOworfQorCitDb2xvciBJbWFnZUZy
YW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0lt
YWdlKCkgfHwgbV9zaXplICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybiBDb2xvcigp
OworICAgIAorICAgIHJldHVybiBQbGF0Zm9ybUltYWdlKG1faW1hZ2UpLnNpbmdsZVBpeGVsU29s
aWRDb2xvcigpOworfQorCitib29sIEltYWdlRnJhbWVEYXRhOjppc0FsbW9zdFNvbGlkQ29sb3Io
KSBjb25zdAoreworICAgIGlmICghaGFzSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIHJldHVybiBQbGF0Zm9ybUltYWdlKG1faW1hZ2UpLmlzQWxtb3N0U29saWRDb2xv
cigpOworfQorICAgIAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VGcmFtZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRnJhbWVEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjgwMGRhOTg4ODRmNTIwYzhjYTkzZjAzNWQ3
YWExZWFjZmZkYjAyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAi
TmF0aXZlSW1hZ2VQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb2xvcjsK
K2NsYXNzIEltYWdlRGVjb2RlcjsKKworLy8gU3Vic2FtcGxpbmdMZXZlbC4gMCBpcyBubyBzdWJz
YW1wbGluZywgMSBpcyBoYWxmIGRpbWVuc2lvbnMgb24gZWFjaCBheGlzIGV0Yy4KK3VzaW5nIFN1
YnNhbXBsaW5nTGV2ZWwgPSB1aW50OF90OworCitlbnVtIDogU3Vic2FtcGxpbmdMZXZlbCB7Cisg
ICAgTWluU3Vic2FtcGxpbmdMZXZlbCA9IDAsCisgICAgTWF4U3Vic2FtcGxpbmdMZXZlbCA9IDMs
CisgICAgRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwgPSBNaW5TdWJzYW1wbGluZ0xldmVsCit9Owor
CitjbGFzcyBJbWFnZUZyYW1lRGF0YSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBDYWNoaW5n
IHsgRW1wdHksIE1ldGFkYXRhLCBJbWFnZSwgTWV0YWRhdGFBbmRJbWFnZSB9OworICAgIGVudW0g
Y2xhc3MgU3RhdHVzIHsgRW1wdHksIFBhcnRpYWwsIENvbXBsZXRlIH07CisgICAgCisgICAgSW1h
Z2VGcmFtZURhdGEoKTsKKyAgICBJbWFnZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmKTsKKyAg
ICBJbWFnZUZyYW1lRGF0YShJbWFnZURlY29kZXImLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyA9IENhY2hpbmc6Ok1ldGFk
YXRhQW5kSW1hZ2UpOworICAgIAorICAgIH5JbWFnZUZyYW1lRGF0YSgpOworICAgIAorICAgIHVu
c2lnbmVkIGNsZWFyKENhY2hpbmcpOworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigp
IGNvbnN0OworICAgIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgCisgICAg
U3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CisgICAgYm9vbCBpc0Nv
bXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpDb21wbGV0ZTsgfQor
ICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXMoKSBjb25zdCB7IHJldHVybiBoYXNJbWFnZSgpID8gbV9zaXplLmFyZWEoKSAq
IDQgOiAwOyB9CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlOyB9CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX3N1YnNhbXBsaW5nTGV2ZWw7IH0KKyAgICBmbG9hdCBk
dXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKyAgICAKKyAgICBib29sIGhh
c0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBbHBoYTsgfQorICAgIGJvb2wgaGFzSW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CisgICAgYm9vbCBoYXNNZXRhZGF0YSgpIGNvbnN0
IHsgcmV0dXJuICFtX3NpemUuaXNFbXB0eSgpOyB9CisgICAgCitwcml2YXRlOgorICAgIHZvaWQg
Y2xlYXJTdWJJbWFnZXMoKTsKKyAgICAKKyAgICBTdGF0dXMgbV9zdGF0dXMgeyBTdGF0dXM6OkVt
cHR5IH07CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsK
KyAgICAKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBEZWZhdWx0SW1hZ2VP
cmllbnRhdGlvbiB9OworICAgIFN1YnNhbXBsaW5nTGV2ZWwgbV9zdWJzYW1wbGluZ0xldmVsIHsg
MCB9OworICAgIGZsb2F0IG1fZHVyYXRpb24geyAwIH07CisgICAgYm9vbCBtX2hhc0FscGhhIHsg
dHJ1ZSB9OworfTsKKyAgICAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBkZGQ4YTU1YmEwOTA2YzU4NjZhMTkyY2Y4ZTQxNGVh
NzA3YjcyOGFjLi44MmY2ZTJkNmU0NTQzM2RhMWE3ZDU2YjM3MGRmYTYxYTRjNDE5MTM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBA
IC0yMjQsNiArMjI0LDExIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2CiAgICAgcmV0dXJuIGlu
aXRpYWxpemVkKCkgPyBtX2RlY29kZXItPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4LCBz
dWJzYW1wbGluZ0xldmVsKSA6IG51bGxwdHI7CiB9CiAKK0ltYWdlRnJhbWVEYXRhIEltYWdlU291
cmNlOjpjcmVhdGVGcmFtZURhdGFBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZyBjYWNoaW5nKQorewor
ICAgIHJldHVybiBpbml0aWFsaXplZCgpID8gSW1hZ2VGcmFtZURhdGEoKm1fZGVjb2RlciwgaW5k
ZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGNhY2hpbmcpIDogSW1hZ2VGcmFtZURhdGEoKTsKK30KKyAg
ICAKIHZvaWQgSW1hZ2VTb3VyY2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAg
aWYgKG1fYWxsb3dTdWJzYW1wbGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDYwMzU3MzliN2U4YjA5NmRjOGRmZTljNTMwYTQyYzZm
MjkxYmRhMDAuLmE0MGM3Y2U5MzA3Y2RhZGYwNzlhYjcwMWE4Mjc5OWI2OTA1MjlkNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMjcs
NiArMjcsNyBAQAogI2lmbmRlZiBJbWFnZVNvdXJjZV9oCiAjZGVmaW5lIEltYWdlU291cmNlX2gK
IAorI2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIK
QEAgLTYzLDkgKzY0LDYgQEAgY29uc3QgaW50IGNBbmltYXRpb25Mb29wT25jZSA9IDA7CiBjb25z
dCBpbnQgY0FuaW1hdGlvbkxvb3BJbmZpbml0ZSA9IC0xOwogY29uc3QgaW50IGNBbmltYXRpb25O
b25lID0gLTI7CiAKLS8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAgaXMgbm8gc3Vic2FtcGxpbmcsIDEg
aXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMuCi10eXBlZGVmIHNob3J0IFN1YnNh
bXBsaW5nTGV2ZWw7Ci0KIGNsYXNzIEltYWdlU291cmNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbWFnZVNvdXJjZSk7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpAQCAtMTMy
LDE4ICsxMzAsMTkgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dTdWJzYW1wbGluZ09mRnJhbWVB
dEluZGV4KHNpemVfdCkgY29uc3Q7CiAgICAgCiAgICAgLy8gU2l6ZSBvZiBvcHRpb25hbGx5IHN1
YnNhbXBsZWQgZnJhbWUuCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IDAsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVz
cGVjdEltYWdlT3JpZW50YXRpb24pIGNvbnN0OworICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgUmVz
cGVjdEltYWdlT3JpZW50YXRpb25FbnVtID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikg
Y29uc3Q7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRl
Y29kZWQgZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0CiAgICAgLy8gZGVjb2RlZCB0aGVu
IHJldHVybiAwLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IDApIGNvbnN0OworICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsKSBjb25zdDsK
ICAgICAKICAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1h
Z2Ugb3JpZW50YXRpb24KICAgICAKICAgICAvLyBDYWxsZXJzIHNob3VsZCBub3QgY2FsbCB0aGlz
IGFmdGVyIGNhbGxpbmcgY2xlYXIoKSB3aXRoIGEgaGlnaGVyIGluZGV4OwogICAgIC8vIHNlZSBj
b21tZW50cyBvbiBjbGVhcigpIGFib3ZlLgotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IDApOworICAgIE5hdGl2ZUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IERlZmF1bHRTdWJzYW1wbGluZ0xldmVsKTsKKyAgICBJbWFnZUZyYW1lRGF0YSBjcmVhdGVGcmFt
ZURhdGFBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGlu
Z0xldmVsLCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZyA9IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5n
OjpNZXRhZGF0YUFuZEltYWdlKTsKICAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckZyYW1l
QnVmZmVyQ2FjaGUoc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjdhZWE0ODlmM2ViMmE4Mjg3NzFjMjEw
M2U4ZDRkMGJlMTdiZTVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2lu
Y2x1ZGUgIk5hdGl2ZUltYWdlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q29sb3I7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBJbnRTaXplOworY2xhc3MgR3JhcGhpY3ND
b250ZXh0OworCitjbGFzcyBQbGF0Zm9ybUltYWdlIHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKKyAgICAgICAgOiBtX2ltYWdlKGltYWdl
KQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzTmlsKCkgY29uc3QgeyByZXR1cm4gIW1faW1h
Z2U7IH0KKyAgICB2b2lkIGNsZWFyU3ViSW1hZ2VzKCk7CisKKyAgICBJbnRTaXplIHNpemUoKSBj
b25zdDsKKyAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7CisgICAgQ29sb3Igc2luZ2xlUGl4ZWxT
b2xpZENvbG9yKCkgY29uc3Q7CisgICAgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoKSBjb25zdDsK
KyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJikgY29uc3Q7
CisKKyAgICBzdGF0aWMgZmxvYXQgc3Vic2FtcGxpbmdTY2FsZShHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpOworCitw
cml2YXRlOgorI2lmIFVTRShDRykKKyAgICBDR0ltYWdlUmVmIGNnSW1hZ2VSZWYoKSBjb25zdCB7
IHJldHVybiBtX2ltYWdlID8gbV9pbWFnZS5nZXQoKSA6IG51bGxwdHI7IH0KKyNlbmRpZgorICAg
IE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KaW5kZXggZjRjMTQ1N2JiYjI1NTc1NGYwMGEwNjI1ZWU4M2UwNGRhN2M2ZWZjZi4uZDUyMGY1
ZDU4NWFjNjBkYmFlZTI1NWUxYjgzYzI0ZGM2ODcyMTBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TW9kZSgpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1fcGF1c2VkSW1h
Z2UgPSBpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpOworICAgICAgICAgICAgICAgIG1fcGF1c2VkSW1h
Z2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAgICAgICAg
ICBpZiAoIW1fcGF1c2VkSW1hZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgbV9kaXNwbGF5TW9k
ZSA9IFBhaW50SXRCbGFjazsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcElt
YWdlQ2Fpcm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzcyMmJlYzUzYWI4
YTA4YThkYTg1MjhiOWUwZDdjNGQwY2Q0MTM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIu
Y29tPgotICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3Jn
PgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKLQotI2lmIFVTRShDQUlSTykKLQot
I2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNp
bmNsdWRlIDxjYWlyby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBOYXRp
dmVJbWFnZSB7Ci0KLUludFNpemUgc2l6ZShjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYg
aW1hZ2UpCi17Ci0gICAgcmV0dXJuIGNhaXJvU3VyZmFjZVNpemUoaW1hZ2UuZ2V0KCkpOwotfQot
Ci1ib29sIGhhc0FscGhhKGNvbnN0IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiBpbWFnZSkKLXsK
LSAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChpbWFnZS5nZXQoKSkgIT0gQ0FJ
Uk9fQ09OVEVOVF9DT0xPUjsKLX0KLQotQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+JiBpbWFnZSkKLXsKLSAgICBBU1NFUlQoaW1hZ2UpOwot
ICAgIAotICAgIGlmIChOYXRpdmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0gSW50U2l6ZSgxLCAxKSkK
LSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBpZiAoY2Fpcm9fc3VyZmFjZV9nZXRfdHlw
ZShpbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQotICAgICAgICByZXR1
cm4gQ29sb3IoKTsKLQotICAgIFJHQkEzMiogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0cjxS
R0JBMzIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGltYWdlLmdldCgpKSk7Ci0gICAg
cmV0dXJuIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7Ci19Ci0KLX0KLQotdm9p
ZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCi0g
ICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2Ny
aXB0aW9uKQotewotICAgIGlmICghZHN0LndpZHRoKCkgfHwgIWRzdC5oZWlnaHQoKSB8fCAhc3Jj
LndpZHRoKCkgfHwgIXNyYy5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhcnRB
bmltYXRpb24oKTsKLQotICAgIGF1dG8gc3VyZmFjZSA9IGZyYW1lSW1hZ2VBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKLSAgICBpZiAoIXN1cmZhY2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdv
bid0IGhhdmUgYW4gaW1hZ2UgeWV0LgotICAgICAgICByZXR1cm47Ci0KLSAgICBDb2xvciBjb2xv
ciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOwotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRzdCwgY29sb3IsIG9wKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnRleHQuc2F2ZSgpOwotCi0gICAgLy8gU2V0
IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCi0gICAgaWYgKG9wID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgJiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhZnJhbWVIYXNBbHBoYUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVDb3B5KTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOwotCi0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykKLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBjYWlyb1N1cmZhY2VTaXpl
KHN1cmZhY2UuZ2V0KCkpOwotICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBhZGp1c3RT
b3VyY2VSZWN0Rm9yRG93blNhbXBsaW5nKHNyYywgc2NhbGVkU2l6ZSk7Ci0jZWxzZQotICAgIEZs
b2F0UmVjdCBhZGp1c3RlZFNyY1JlY3Qoc3JjKTsKLSNlbmRpZgotCi0gICAgSW1hZ2VPcmllbnRh
dGlvbiBmcmFtZU9yaWVudGF0aW9uKGRlc2NyaXB0aW9uLmltYWdlT3JpZW50YXRpb24oKSk7Ci0g
ICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdElt
YWdlT3JpZW50YXRpb24pCi0gICAgICAgIGZyYW1lT3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0
aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0KLSAgICBGbG9hdFJlY3QgZHN0UmVjdCA9IGRz
dDsKLQotICAgIGlmIChmcmFtZU9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9u
KSB7Ci0gICAgICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJl
IGF0ICgwLCAwKS4KLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJl
Y3QueSgpKTsKLSAgICAgICAgZHN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwotICAg
ICAgICBjb250ZXh0LmNvbmNhdENUTShmcmFtZU9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZh
dWx0KGRzdFJlY3Quc2l6ZSgpKSk7Ci0gICAgICAgIGlmIChmcmFtZU9yaWVudGF0aW9uLnVzZXNX
aWR0aEFzSGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0YW5n
bGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0
aGUgb3JpZW50YXRpb24gb2YKLSAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5l
ZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUu
Ci0gICAgICAgICAgICBkc3RSZWN0ID0gRmxvYXRSZWN0KGRzdFJlY3QueCgpLCBkc3RSZWN0Lnko
KSwgZHN0UmVjdC5oZWlnaHQoKSwgZHN0UmVjdC53aWR0aCgpKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1
cmZhY2UuZ2V0KCksIGRzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgY29udGV4dCk7Ci0KLSAgICBj
b250ZXh0LnJlc3RvcmUoKTsKLQotICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGlt
YWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKLX0KLQotYm9vbCBGcmFtZURhdGE6OmNsZWFy
KGJvb2wgY2xlYXJNZXRhZGF0YSkKLXsKLSAgICBpZiAoY2xlYXJNZXRhZGF0YSkKLSAgICAgICAg
bV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKLQotICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIG1f
aW1hZ2UgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoQ0FJ
Uk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Q
bGF0Zm9ybUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGFkYWVjMjcwZTMxYjA1
NGFmYzVmNjZkNDgyODhhZWJmMDYxZTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcApAQCAtMCww
ICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1JbWFnZS5oIgorCisjaWYg
VVNFKENBSVJPKQorCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordm9pZCBQbGF0Zm9ybUltYWdlOjpjbGVhclN1YkltYWdlcygpCit7Cit9CisKK0lu
dFNpemUgUGxhdGZvcm1JbWFnZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzTmlsKCkg
PyBJbnRTaXplKCkgOiBjYWlyb1N1cmZhY2VTaXplKG1faW1hZ2UuZ2V0KCkpOworfQorCitib29s
IFBsYXRmb3JtSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNOaWwoKSB8
fCBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG1faW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRF
TlRfQ09MT1I7Cit9CisKK0NvbG9yIFBsYXRmb3JtSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xv
cigpIGNvbnN0Cit7CisgICAgaWYgKGlzTmlsKCkgfHwgc2l6ZSgpICE9IEludFNpemUoMSwgMSkp
CisgICAgICAgIHJldHVybiBDb2xvcigpOworCisgICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5
cGUobV9pbWFnZS5nZXQoKSkgIT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKQorICAgICAgICBy
ZXR1cm4gQ29sb3IoKTsKKworICAgIFJHQkEzMiogcGl4ZWwgPSByZWludGVycHJldF9jYXN0X3B0
cjxSR0JBMzIqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1faW1hZ2UuZ2V0KCkpKTsK
KyAgICByZXR1cm4gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKK30KKworYm9v
bCBQbGF0Zm9ybUltYWdlOjppc0FsbW9zdFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKworZmxvYXQgUGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZShHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmKQoreworICAg
IHJldHVybiAxOworfQorCit2b2lkIFBsYXRmb3JtSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEludFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1v
ZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVudGF0aW9uKSBjb25zdAoreworICAgIGNv
bnRleHQuc2F2ZSgpOworICAgIAorICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9u
LgorICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIG1vZGUgPT0gQmxlbmRNb2Rl
Tm9ybWFsICYmICFoYXNBbHBoYSgpKQorICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVDb3B5KTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKG9wLCBtb2RlKTsKKyAgICAgICAgCisjaWYgRU5BQkxFKElNQUdFX0RFQ09E
RVJfRE9XTl9TQU1QTElORykKKyAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBjYWlyb1N1cmZhY2VT
aXplKG1faW1hZ2UuZ2V0KCkpOworICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBhZGp1
c3RTb3VyY2VSZWN0Rm9yRG93blNhbXBsaW5nKHNyY1JlY3QsIHNjYWxlZFNpemUpOworI2Vsc2UK
KyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNyY1JlY3QpOworI2VuZGlmCisgICAgICAg
IAorICAgIEZsb2F0UmVjdCBhZGp1c3RlZERlc3RSZWN0ID0gZGVzdFJlY3Q7CisgICAgICAgIAor
ICAgIGlmIChvcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikgeworICAgICAg
ICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCku
CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpKTsK
KyAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOworICAg
ICAgICBjb250ZXh0LmNvbmNhdENUTShvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChh
ZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dp
ZHRoQXNIZWlnaHQoKSkgeworICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3Rhbmds
ZSB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRo
ZSBvcmllbnRhdGlvbiBvZgorICAgICAgICAgICAgLy8gdGhlIGltYWdlLCBhcyBpdCB3YXMgbmVl
ZGVkIGZvciBwYWdlIGxheW91dCwgc28gd2UgbmVlZCB0byByZXZlcnNlIGl0IGJhY2sgaGVyZS4K
KyAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0U2l6ZShhZGp1c3RlZERlc3RSZWN0LnNp
emUoKS50cmFuc3Bvc2VkU2l6ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KG1faW1hZ2UuZ2V0KCksIGFk
anVzdGVkRGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgY29udGV4dCk7CisKKyAgICBjb250ZXh0
LnJlc3RvcmUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNF
KENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Qml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9C
aXRtYXBJbWFnZUNHLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNjODFhMTcw
YmU3OWFlNmJlNmNhY2RjOTlmNGMzOThjYWFmNDI2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9CaXRtYXBJbWFnZUNHLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwNiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgotCi0jaWYgVVNFKENH
KQotCi0jaW5jbHVkZSAiQ29yZUdyYXBoaWNzU1BJLmgiCi0jaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCi0jaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRDRy5oIgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi0jaWYg
VVNFKEFQUEtJVCkKLSNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuaD4KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oIgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVk
ZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIE5hdGl2ZUltYWdlIHsKLQotSW50
U2l6ZSBzaXplKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UpCi17Ci0gICAgQVNT
RVJUKGltYWdlKTsKLSAgICByZXR1cm4gSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0
KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7Ci19Ci0KLWJvb2wgaGFzQWxwaGEo
Y29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JikKLXsKLSAgICAvLyBGSVhNRTogQW5zd2VyIGNv
cnJlY3RseSB0aGUgcXVlc3Rpb246IGRvZXMgdGhlIENHSW1hZ2VSZWYgaGF2ZSBhbHBoYSBjaGFu
bm5lbD8KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSAgICAKLUNvbG9yIHNpbmdsZVBpeGVsU29saWRD
b2xvcihjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQotewotICAgIEFTU0VSVChp
bWFnZSk7Ci0gICAgCi0gICAgaWYgKE5hdGl2ZUltYWdlOjpzaXplKGltYWdlKSAhPSBJbnRTaXpl
KDEsIDEpKQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAKLSAgICB1bnNpZ25lZCBjaGFy
IHBpeGVsWzRdOyAvLyBSR0JBCi0gICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0Jp
dG1hcENvbnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVvZihwaXhlbCksIHNSR0JDb2xv
clNwYWNlUmVmKCksCi0gICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCB8IGtD
R0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7Ci0KLSAgICBpZiAoIWJpdG1hcENvbnRleHQpCi0gICAg
ICAgIHJldHVybiBDb2xvcigpOwotICAgIAotICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShiaXRt
YXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKLSAgICBDR0NvbnRleHREcmF3SW1h
Z2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKSwgaW1hZ2UuZ2V0
KCkpOwotICAgIAotICAgIGlmICghcGl4ZWxbM10pCi0gICAgICAgIHJldHVybiBDb2xvcigwLCAw
LCAwLCAwKTsKLQotICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhl
bFszXSk7Ci19Ci0KLX0KLQotYm9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0
YSkKLXsKLSAgICBpZiAoY2xlYXJNZXRhZGF0YSkKLSAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBm
YWxzZTsKLQotICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IDA7Ci0KLSAgICBpZiAobV9pbWFnZSkg
ewotI2lmIENBQ0hFX1NVQklNQUdFUwotICAgICAgICBzdWJpbWFnZUNhY2hlKCkuY2xlYXJJbWFn
ZShtX2ltYWdlLmdldCgpKTsKLSNlbmRpZgotICAgICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotQ0dJbWFn
ZVJlZiBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZVJlZigpCi17Ci0gICAgcmV0dXJuIGZyYW1lSW1h
Z2VBdEluZGV4KDApLmdldCgpOwotfQotCi1DR0ltYWdlUmVmIEJpdG1hcEltYWdlOjpnZXRGaXJz
dENHSW1hZ2VSZWZPZlNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBzaXplX3QgY291
bnQgPSBmcmFtZUNvdW50KCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJbWFnZSA9IGZyYW1lSW1hZ2VBdEluZGV4KGkpLmdl
dCgpOwotICAgICAgICBpZiAoY2dJbWFnZSAmJiBJbnRTaXplKENHSW1hZ2VHZXRXaWR0aChjZ0lt
YWdlKSwgQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlKSkgPT0gc2l6ZSkKLSAgICAgICAgICAgIHJl
dHVybiBjZ0ltYWdlOwotICAgIH0KLQotICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IENH
SW1hZ2VSZWYgaWYgd2UgY2FuJ3QgZmluZCB0aGUgcmlnaHQgc2l6ZQotICAgIHJldHVybiBnZXRD
R0ltYWdlUmVmKCk7Ci19Ci0KLVJldGFpblB0cjxDRkFycmF5UmVmPiBCaXRtYXBJbWFnZTo6Z2V0
Q0dJbWFnZUFycmF5KCkKLXsKLSAgICBzaXplX3QgY291bnQgPSBmcmFtZUNvdW50KCk7Ci0gICAg
aWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgQ0ZNdXRhYmxl
QXJyYXlSZWYgYXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShOVUxMLCBjb3VudCwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7Ci0gICAgICAgIGlmIChDR0ltYWdlUmVmIGN1cnJGcmFtZSA9IGZyYW1lSW1hZ2VBdEluZGV4
KGkpLmdldCgpKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LCBjdXJyRnJh
bWUpOwotICAgIH0KLSAgICByZXR1cm4gYWRvcHRDRihhcnJheSk7Ci19Ci0KLXZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVz
Y3JpcHRpb24pCi17Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIHN0YXJ0QW5pbWF0aW9uKERvTm90
Q2F0Y2hVcCk7Ci0jZWxzZQotICAgIHN0YXJ0QW5pbWF0aW9uKCk7Ci0jZW5kaWYKLQotICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKLSAgICAvLyBOZXZlciB1c2Ugc3Vic2FtcGxlZCBp
bWFnZXMgZm9yIGRyYXdpbmcgaW50byBQREYgY29udGV4dHMuCi0gICAgaWYgKHdrQ0dDb250ZXh0
SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQotICAgICAgICBpbWFnZSA9IGNv
cHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlB
ZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29u
dGV4dCgpKSk7Ci0gICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9h
dD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNy
Y1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBz
cmNSZWN0LmhlaWdodCgpKSk7Ci0KLSAgICAgICAgaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleCht
X2N1cnJlbnRGcmFtZSwgc3Vic2FtcGxpbmdTY2FsZSk7Ci0gICAgfQotCi0gICAgaWYgKCFpbWFn
ZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xv
cigpOwotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZmlsbFdpdGhTb2xpZENv
bG9yKGN0eHQsIGRlc3RSZWN0LCBjb2xvciwgY29tcG9zaXRlT3ApOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2Ug
dGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgotICAgIEludFNpemUgaW1hZ2VTaXplKENHSW1h
Z2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKTsK
LSAgICAKLSAgICAvLyBzcmNSZWN0IGlzIGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgdW5zdWJz
YW1wbGVkIGltYWdlLCBzbyB3ZSBoYXZlIHRvIG1hcCBpdCB0byB0aGUgc3Vic2FtcGxlZCBpbWFn
ZS4KLSAgICBGbG9hdFJlY3Qgc2NhbGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgaWYgKGltYWdl
U2l6ZSAhPSBtX3NpemUpIHsKLSAgICAgICAgRmxvYXRSZWN0IG9yaWdpbmFsSW1hZ2VCb3VuZHMo
RmxvYXRQb2ludCgpLCBtX3NpemUpOwotICAgICAgICBGbG9hdFJlY3Qgc3Vic2FtcGxlZEltYWdl
Qm91bmRzKEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKTsKLSAgICAgICAgc2NhbGVkU3JjUmVjdCA9
IG1hcFJlY3Qoc3JjUmVjdCwgb3JpZ2luYWxJbWFnZUJvdW5kcywgc3Vic2FtcGxlZEltYWdlQm91
bmRzKTsKLSAgICB9Ci0gICAgCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKLSAg
ICBpZiAoZGVzY3JpcHRpb24ucmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSA9PSBSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbikKLSAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7Ci0KLSAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9k
ZSwgb3JpZW50YXRpb24pOwotCi0gICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1h
Z2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwotfQotCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Qml0bWFwSW1hZ2U6OmNvcHlVbnNjYWxlZEZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkK
LXsKLSAgICBpZiAoaW5kZXggPj0gZnJhbWVDb3VudCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXplKCkgfHwgIW1fZnJhbWVzW2luZGV4
XS5tX2ltYWdlKQotICAgICAgICBjYWNoZUZyYW1lKGluZGV4LCAwKTsKLQotICAgIGlmICghbV9m
cmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlOwotCi0gICAgcmV0dXJuIG1fc291cmNlLmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KGluZGV4KTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggYjQyOGQ1
MGQ5NGJmOTI0MjgwMzI4N2QyZWVjMTZiZDY5YzUyOGQ5Mi4uM2RhYTEzOWFiN2VhNWI0MjE1Nzc4
ODM1ZDM1M2Q4YWRiNWYwYzc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC03Miw3ICs3Miw3IEBAIENHUGF0dGVyblJlZiBQ
YXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2Vy
U3BhY2VUcmFuCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywg
d2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3Rv
bSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KICAgICBpZiAo
bV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIHdrQ0dQYXR0ZXJuQ3JlYXRl
V2l0aEltYWdlQW5kVHJhbnNmb3JtKHRpbGVJbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCksIHBhdHRl
cm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CisgICAgICAgIHJl
dHVybiB3a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxlSW1hZ2UoKS0+
bmF0aXZlSW1hZ2UoKS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwgd2tQYXR0ZXJuVGlsaW5nQ29u
c3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBm
b3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBv
ZiBGTFRfTUFYIGFsc28KICAgICAvLyByZXN1bHQgaW4gbm90aGluZyBiZWluZyByZW5kZXJlZC4K
QEAgLTgzLDcgKzgzLDcgQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICBDR0Zsb2F0IHlT
dGVwID0gbV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAv
LyBUaGUgcGF0dGVybiB3aWxsIHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUg
cmVuZGVyaW5nIGluIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sKLSAgICBDR0ltYWdlUmVmIHBsYXRm
b3JtSW1hZ2UgPSBDR0ltYWdlUmV0YWluKHRpbGVJbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCkpOwor
ICAgIENHSW1hZ2VSZWYgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZSgp
LmxlYWtSZWYoKTsKIAogICAgIGNvbnN0IENHUGF0dGVybkNhbGxiYWNrcyBwYXR0ZXJuQ2FsbGJh
Y2tzID0geyAwLCBwYXR0ZXJuQ2FsbGJhY2ssIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sgfTsKICAg
ICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlKHBsYXRmb3JtSW1hZ2UsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCB4U3RlcCwgeVN0ZXAsIGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcs
IFRSVUUsICZwYXR0ZXJuQ2FsbGJhY2tzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmYjJk
ZTBlYTEyZGEyMTRmMTA0NmMzOTYyZThlYWI1M2M2NDQxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCkBA
IC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIKKwor
I2lmIFVTRShDRykKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiQ29yZUdyYXBoaWNz
U1BJLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRp
ZXMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgorI2luY2x1ZGUgIkludFNpemUu
aCIKKyNpbmNsdWRlICJTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgiCisKKyNpZiBQTEFURk9STShX
SU4pCisjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3ZvaWQgUGxhdGZvcm1J
bWFnZTo6Y2xlYXJTdWJJbWFnZXMoKQoreworI2lmIENBQ0hFX1NVQklNQUdFUworICAgIGlmICgh
aXNOaWwoKSkKKyAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNsZWFySW1hZ2UoY2dJbWFnZVJlZigp
KTsKKyNlbmRpZgorfQorCitJbnRTaXplIFBsYXRmb3JtSW1hZ2U6OnNpemUoKSBjb25zdAorewor
ICAgIHJldHVybiBpc05pbCgpID8gSW50U2l6ZSgpIDogSW50U2l6ZShDR0ltYWdlR2V0V2lkdGgo
Y2dJbWFnZVJlZigpKSwgQ0dJbWFnZUdldEhlaWdodChjZ0ltYWdlUmVmKCkpKTsKK30KKworYm9v
bCBQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEFuc3dl
ciBjb3JyZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2VzIHRoZSBDR0ltYWdlUmVmIGhhdmUgYWxwaGEg
Y2hhbm5uZWw/CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0NvbG9yIFBsYXRmb3JtSW1hZ2U6OnNp
bmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgaWYgKGlzTmlsKCkgfHwgc2l6ZSgp
ICE9IEludFNpemUoMSwgMSkpCisgICAgICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIHVu
c2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKKyAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBh
ZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwgMSwgMSwgOCwgc2l6ZW9mKHBpeGVs
KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwKKyAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKKyAgICAKKyAgICBpZiAoIWJpdG1h
cENvbnRleHQpCisgICAgICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIENHQ29udGV4dFNl
dEJsZW5kTW9kZShiaXRtYXBDb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1vZGVDb3B5KTsKKyAgICBD
R0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCAx
LCAxKSwgY2dJbWFnZVJlZigpKTsKKyAgICAKKyAgICBpZiAoIXBpeGVsWzNdKQorICAgICAgICBy
ZXR1cm4gQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgCisgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBd
ICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICog
MjU1IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKK30KKyAgICAKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6
aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAgICBDR0ltYWdlUmVmIGltYWdlID0gY2dJ
bWFnZVJlZigpOworICAgIEFTU0VSVChDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChpbWFnZSkg
PT0gOCk7CisgICAgCisgICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRCaXRt
YXBJbmZvKGltYWdlKTsKKyAgICBpZiAoIShpbWFnZUluZm8gJiBrQ0dCaXRtYXBCeXRlT3JkZXIz
MkxpdHRsZSkgfHwgKGltYWdlSW5mbyAmIGtDR0JpdG1hcEFscGhhSW5mb01hc2spICE9IGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHsKKyAgICAgICAgLy8gRklYTUU6IENvbnNpZGVy
IGJlaW5nIGFibGUgdG8gaGFuZGxlIG90aGVyIHBpeGVsIGZvcm1hdHMuCisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAg
IHNpemVfdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CisgICAgc2l6ZV90IGhlaWdo
dCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOworICAgIHNpemVfdCBieXRlc1BlclJvdyA9IENH
SW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZSk7CisgICAgCisgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERh
dGFQcm92aWRlcihpbWFnZSkpKTsKKyAgICBjb25zdCBVSW50OCogZGF0YSA9IENGRGF0YUdldEJ5
dGVQdHIocHJvdmlkZXIuZ2V0KCkpOworICAgIAorICAgIC8vIE92ZXJsYXkgYSBncmlkIG9mIHNh
bXBsaW5nIGRvdHMgb24gdG9wIG9mIGEgZ3JheXNjYWxlIHZlcnNpb24gb2YgdGhlIGltYWdlLgor
ICAgIC8vIEZvciB0aGUgaW50ZXJpb3IgcG9pbnRzLCBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2Ug
aW4gbHVtaW5hbmNlIGFtb25nIHRoZSBzYW1wbGUgcG9pbnQKKyAgICAvLyBhbmQgaXRzIHN1cnJv
dW5kcyBwb2ludHMsIHNjYWxlZCBieSB0cmFuc3BhcmVuY3kuCisgICAgY29uc3QgdW5zaWduZWQg
c2FtcGxlUm93cyA9IDc7CisgICAgY29uc3QgdW5zaWduZWQgc2FtcGxlQ29scyA9IDc7CisgICAg
Ly8gRklYTUU6IFJlZmluZSB0aGUgcHJvcGVyIG51bWJlciBvZiBzYW1wbGVzLCBhbmQgYWNjb21t
b2RhdGUgZGlmZmVyZW50IGFzcGVjdCByYXRpb3MuCisgICAgaWYgKHdpZHRoIDwgc2FtcGxlQ29s
cyB8fCBoZWlnaHQgPCBzYW1wbGVSb3dzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhc3Qgcm93L2NvbHVtbiBsYW5kIG9uIHRoZSBpbWFnZSBw
ZXJpbWV0ZXIuCisgICAgY29uc3QgZmxvYXQgc3RyaWRlV2lkdGggPSBzdGF0aWNfY2FzdDxmbG9h
dD4od2lkdGggLSAxKSAvIChzYW1wbGVDb2xzIC0gMSk7CisgICAgY29uc3QgZmxvYXQgc3RyaWRl
SGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCAtIDEpIC8gKHNhbXBsZVJvd3MgLSAx
KTsKKyAgICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3NdW3NhbXBsZUNvbHNdOworICAgIAorICAg
IC8vIEZpbmQgdGhlIGx1bWluYW5jZSBvZiB0aGUgc2FtcGxlIHBvaW50cy4KKyAgICBmbG9hdCB5
ID0gMDsKKyAgICBjb25zdCBVSW50OCogcm93ID0gZGF0YTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2FtcGxlUm93czsgKytpKSB7CisgICAgICAgIGZsb2F0IHggPSAwOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgc2FtcGxlQ29sczsgKytqKSB7CisgICAgICAgICAg
ICBjb25zdCBVSW50OCogcDAgPSByb3cgKyAoc3RhdGljX2Nhc3Q8aW50Pih4ICsgLjUpKSAqIDQ7
CisgICAgICAgICAgICAvLyBSIEcgQiBBCisgICAgICAgICAgICBzYW1wbGVzW2ldW2pdID0gKDAu
MjEyNSAqICpwMCArIDAuNzE1NCAqICoocDArMSkgKyAwLjA3MjEgKiAqKHAwKzIpKSAqICoocDAr
MykgLyAyNTU7CisgICAgICAgICAgICB4ICs9IHN0cmlkZVdpZHRoOworICAgICAgICB9CisgICAg
ICAgIHkgKz0gc3RyaWRlSGVpZ2h0OworICAgICAgICByb3cgPSBkYXRhICsgKHN0YXRpY19jYXN0
PGludD4oeSArIC41KSkgKiBieXRlc1BlclJvdzsKKyAgICB9CisgICAgCisgICAgLy8gRGV0ZXJt
aW5lIHRoZSBpbWFnZSBzY29yZS4KKyAgICBmbG9hdCBhY2N1bVNjb3JlID0gMDsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxOyBpIDwgc2FtcGxlUm93cyAtIDE7ICsraSkgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSAxOyBqIDwgc2FtcGxlQ29scyAtIDE7ICsraikgeworICAgICAgICAgICAg
ZmxvYXQgZGlmZiA9IHNhbXBsZXNbaSAtIDFdW2pdICsgc2FtcGxlc1tpICsgMV1bal0gKyBzYW1w
bGVzW2ldW2ogLSAxXSArIHNhbXBsZXNbaV1baiArIDFdIC0gNCAqIHNhbXBsZXNbaV1bal07Cisg
ICAgICAgICAgICBhY2N1bVNjb3JlICs9IGRpZmYgKiBkaWZmOworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIC8vIFRoZSBzY29yZSBmb3IgYSBnaXZlbiBzYW1wbGUgY2FuIGJlIHdpdGhpbiB0
aGUgcmFuZ2Ugb2YgMCBhbmQgMjU1XjIuCisgICAgcmV0dXJuIGFjY3VtU2NvcmUgPCAyNTAwICog
KHNhbXBsZVJvd3MgLSAyKSAqIChzYW1wbGVDb2xzIC0gMik7Cit9CisKK2Zsb2F0IFBsYXRmb3Jt
SW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCit7CisgICAgLy8g
TmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRz
LgorICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgCisgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVz
dGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29u
dGV4dEdldENUTShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CisgICAgcmV0dXJuIHN0ZDo6
bWluPGZsb2F0PigxLCBzdGQ6Om1heCh0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLndp
ZHRoIC8gc3JjUmVjdC53aWR0aCgpLCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdC5zaXplLmhl
aWdodCAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKK30KKwordm9pZCBQbGF0Zm9ybUltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIGNvbnN0IEltYWdlT3JpZW50YXRpb24mIG9yaWVu
dGF0aW9uKSBjb25zdAoreworICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFu
IGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KKyAgICBJbnRTaXplIHN1YnNhbXBs
ZWRJbWFnZVNpemUgPSBzaXplKCk7CisgICAgCisgICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29v
cmRpbmF0ZXMgb2YgdGhlIHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQg
dG8gdGhlIHN1YnNhbXBsZWQgaW1hZ2UuCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9
IHNyY1JlY3Q7CisgICAgaWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkKKyAgICAg
ICAgYWRqdXN0ZWRTcmNSZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNT
aXplKSwgRmxvYXRSZWN0KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOworICAgIAorICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RS
ZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBtb2RlLCBvcmllbnRhdGlvbik7Cit9CisgICAgCit9
CisKKyNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYS5tbQppbmRleCA4OTcyMGQxNzM2NWRhN2U4YmE4NDY5ZDUyOTQ1NDhkNTE4NDdhN2ZlLi40
NDc2ZmM1Zjg3YzM0OTg4ZjZkOWFkNTVlZWJkOGQxYjliYjAyMmU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KQEAgLTEyOSw3ICsxMjksNyBAQCBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hOjp+VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYSgpCiB2
b2lkIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OnVwZGF0ZSgpCiB7CiAgICAgaWYgKGF1
dG8gcmVwcmVzZW50YXRpb24gPSBtX2NsaWVudC5jcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkltYWdlKCkpCi0gICAgICAgIFttX2xheWVyLmdldCgpIHNldENvbnRlbnRzOihpZClyZXByZXNl
bnRhdGlvbi0+Z2V0Q0dJbWFnZVJlZigpXTsKKyAgICAgICAgW21fbGF5ZXIuZ2V0KCkgc2V0Q29u
dGVudHM6KGlkKXJlcHJlc2VudGF0aW9uLT5uYXRpdmVJbWFnZSgpLmdldCgpXTsKIH0KIAogdm9p
ZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpzZXRDb250ZW50U2NhbGUoZmxvYXQgc2Nh
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1h
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW0KaW5kZXggMDFlYjZkZDMwMDQzYTIyNTI5MTc2ZmQ5MTIxMTdkYzU3NzZjMTdiYS4uZGMxYzdj
NzA5NWQ5NDRjNGM2MmYxZmUwOTM1NzAyYTEzYzdjN2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtODUsMzEgKzg1LDIyIEBA
IENGRGF0YVJlZiBCaXRtYXBJbWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKCkKICAgICBpZiAo
bV90aWZmUmVwKQogICAgICAgICByZXR1cm4gbV90aWZmUmVwLmdldCgpOwogCi0gICAgdW5zaWdu
ZWQgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOworICAgIGF1dG8gbmF0aXZlSW1hZ2VzID0gdGhp
cy0+ZnJhbWVzTmF0aXZlSW1hZ2VzKCk7CiAKLSAgICAvLyBJZiBudW1GcmFtZXMgaXMgemVybywg
d2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2YWxpZCBkYXRhCisg
ICAgLy8gSWYgZnJhbWVzSW1hZ2VzLnNpemUoKSBpcyB6ZXJvLCB3ZSBrbm93IGZvciBjZXJ0YWlu
IHRoaXMgaW1hZ2UgZG9lc24ndCBoYXZlIHZhbGlkIGRhdGEKICAgICAvLyBFdmVuIHRob3VnaCB0
aGUgY2FsbCB0byBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSB3aWxsIGZhaWwgYW5k
IHdlJ2xsIGhhbmRsZSBpdCBncmFjZWZ1bGx5LAogICAgIC8vIGluIGNlcnRhaW4gY2lyY3Vtc3Rh
bmNlcyB0aGF0IGNhbGwgd2lsbCBzcGFtIHRoZSBjb25zb2xlIHdpdGggYW4gZXJyb3IgbWVzc2Fn
ZQotICAgIGlmICghbnVtRnJhbWVzKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFZlY3RvcjxD
R0ltYWdlUmVmPiBpbWFnZXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZyYW1l
czsgKytpICkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRl
eChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2UpCi0gICAgICAgICAgICBpbWFnZXMuYXBw
ZW5kKGNnSW1hZ2UpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIG51bVZhbGlkRnJhbWVzID0gaW1h
Z2VzLnNpemUoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlcy5zaXplKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGRhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwotICAgIFJldGFpblB0cjxDR0ltYWdlRGVz
dGluYXRpb25SZWY+IGRlc3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVh
dGVXaXRoRGF0YShkYXRhLmdldCgpLCBrVVRUeXBlVElGRiwgbnVtVmFsaWRGcmFtZXMsIDApKTsK
KyAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9IGFkb3B0
Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VUVHlwZVRJ
RkYsIG5hdGl2ZUltYWdlcy5zaXplKCksIDApKTsKIAogICAgIGlmICghZGVzdGluYXRpb24pCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1WYWxpZEZyYW1lczsgKytpKQotICAgICAgICBDR0ltYWdlRGVz
dGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgaW1hZ2VzW2ldLCAwKTsKKyAgICBm
b3IgKGF1dG8gbmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCisgICAgICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBuYXRpdmVJbWFnZS5nZXQoKSwgMCk7
CiAKICAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQppbmRleCAyMTZjZDA5M2Yy
NjQ2N2NiYTg4YTQzZjY5M2FiZjRjZjUxZGQxYTRkLi5kMTE0NTRiMDVlZjg4OTkzYTYyODkzODk2
YmMwYzExNzI4YzVlZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
Lm1tCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OnVw
ZGF0ZVBsYXRmb3JtTGF5ZXIoKSBjb25zdAogICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgbV9wcmV2aWV3SW1hZ2UgPSBpbWFnZS0+Z2V0Q0dJbWFnZVJl
ZigpOworICAgICAgICBtX3ByZXZpZXdJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpOwogICAg
ICAgICBpZiAoIW1fcHJldmlld0ltYWdlKQogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCmluZGV4IDM2Y2Q2NTE2
ZTgwZjE3NDhiZmVhYjc3YTkzMDI3MWMxMjFkZTgwMTkuLjRiNGUzNzc5ZTk2Zjc4YzY1NDBhNTNj
NDQ3OGMzYmZkOTM1ZjUzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZUNHV2luLmNwcApAQCAtMTM2LDkgKzEzNiw5IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltZywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KQogICAgIENHQ29udGV4dFNjYWxlQ1RNKGRyYXdDb250ZXh0LCAxLCAtMSk7CiAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yKGRyYXdDb250ZXh0LCB3aGl0ZSk7CiAgICAgQ0dDb250ZXh0RmlsbFJl
Y3QoZHJhd0NvbnRleHQsIHJlY3QpOwotICAgIGlmIChhdXRvIHNyY0ltYWdlID0gaW1nLT5nZXRD
R0ltYWdlUmVmKCkpIHsKKyAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGltZy0+bmF0aXZlSW1hZ2Uo
KSkgewogICAgICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoZHJhd0NvbnRleHQsIGtDR0JsZW5k
TW9kZU5vcm1hbCk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShkcmF3Q29udGV4dCwgcmVj
dCwgc3JjSW1hZ2UpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRleHQsIHJl
Y3QsIHNyY0ltYWdlLmdldCgpKTsKICAgICB9CiAgICAgQ0dDb250ZXh0UmVsZWFzZShkcmF3Q29u
dGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCmluZGV4IGI2NTlkNmRiZjlhZDY5
OTljM2FjOTYyZGU5NTE1NzgwOTdlMWYzYjEuLjdjNWVkMjEwZGRiMmEzMmE3NjY2NzRjMTIwZDk5
NGMyZmE0N2U3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQpAQCAtMjA0LDcgKzIw
NCw3IEBAICsgKENHSW1hZ2VSZWYpaW1hZ2VGb3JVUkw6KE5TVVJMICopdXJsCiAgICAgV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8V2ViQ29yZTo6Q2FjaGVkSW1h
Z2U+KCpjYWNoZWRSZXNvdXJjZSk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZS5oYXNJbWFnZSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+
Z2V0Q0dJbWFnZVJlZigpOworICAgIHJldHVybiBjYWNoZWRJbWFnZS5pbWFnZSgpLT5uYXRpdmVJ
bWFnZSgpLmdldCgpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCmlu
ZGV4IDBmNmRlN2ExNDZhNjExYTUyYWExZTUzOTAxOWZhNmMxYzQ2NzI1YWUuLjMwNTYzMzZjYjY2
ZmU0YWYxOGJkYzUyOWFjYTJmOGZjODgxZGZlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKQEAgLTM3LDEyICsz
NywyMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIENHSW1hZ2VSZWYgV0tJY29uRGF0YWJh
c2VUcnlHZXRDR0ltYWdlRm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVmIGljb25EYXRhYmFzZVJlZiwg
V0tVUkxSZWYgdXJsUmVmLCBXS1NpemUgc2l6ZSkKIHsKICAgICBJbWFnZSogaW1hZ2UgPSB0b0lt
cGwoaWNvbkRhdGFiYXNlUmVmKS0+aW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVybFJlZikp
OwotICAgIHJldHVybiBpbWFnZSA/IGltYWdlLT5nZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUoSW50
U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KHNpemUu
aGVpZ2h0KSkpIDogMDsKKyAgICByZXR1cm4gaW1hZ2UgPyBpbWFnZS0+bmF0aXZlSW1hZ2VPZlNp
emUoSW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHNpemUud2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+
KHNpemUuaGVpZ2h0KSkpLmdldCgpIDogbnVsbHB0cjsKIH0KIAogQ0ZBcnJheVJlZiBXS0ljb25E
YXRhYmFzZVRyeUNvcHlDR0ltYWdlQXJyYXlGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRh
dGFiYXNlUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7CiAgICAgSW1hZ2UqIGltYWdlID0gdG9JbXBs
KGljb25EYXRhYmFzZVJlZiktPmltYWdlRm9yUGFnZVVSTCh0b1dURlN0cmluZyh1cmxSZWYpKTsK
LSAgICByZXR1cm4gaW1hZ2UgPyBpbWFnZS0+Z2V0Q0dJbWFnZUFycmF5KCkubGVha1JlZigpIDog
MDsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8g
bmF0aXZlSW1hZ2VzID0gaW1hZ2UtPmZyYW1lc05hdGl2ZUltYWdlcygpOworICAgIGlmICghbmF0
aXZlSW1hZ2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgQ0ZN
dXRhYmxlQXJyYXlSZWYgYXJyYXkgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZShudWxscHRyLCBuYXRp
dmVJbWFnZXMuc2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKKyAgICBmb3IgKGF1dG8g
bmF0aXZlSW1hZ2UgOiBuYXRpdmVJbWFnZXMpCisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShh
cnJheSwgbmF0aXZlSW1hZ2UuZ2V0KCkpOworICAgIAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
RkFycmF5UmVmPihDRlJldGFpbihhcnJheSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDYy
NjBkZTQ2MTFhOGVhZGE1Y2MxNTI5YzEzM2M3NTFjNjgwNjNmYzUuLmM1ZTM1NzJhNDc2NDdkYzJi
NmIwMDIzMmU1ZDk1NzYxZWJiMDZkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC00MDc4LDcgKzQw
NzgsNyBAQCAtIChVSUltYWdlICopX3ByZXNlbnRhdGlvblNuYXBzaG90Rm9yUHJldmlld0l0ZW1D
b250cm9sbGVyOihVSVByZXZpZXdJdGVtQ29udHJvbAogewogICAgIGlmICghX3Bvc2l0aW9uSW5m
b3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6X3Bvc2l0
aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPmdldENHSW1hZ2VSZWYo
KV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENH
SW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24ubGlua0luZGljYXRvci5jb250ZW50SW1hZ2UtPm5h
dGl2ZUltYWdlKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKV9wcmVz
ZW50YXRpb25SZWN0c0ZvclByZXZpZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRy
b2xsZXIgKiljb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggOWEzM2Y3Y2M3ZGM3YzdkNzJmOWRhNzQzMDk4YjdkYmNh
ODI0MDljZi4uYTUzMjUxMDY3OGI5ZjUzNTE0NThhMzhhOWY0MjMzNzQ3ZDAzNWY1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAt
MTcyNyw2OSArMTcyNyw2IEBAIHZvaWQgUGx1Z2luVmlldzo6d2luZG93ZWRQbHVnaW5WaXNpYmls
aXR5RGlkQ2hhbmdlKGJvb2wgaXNWaXNpYmxlLCB1aW50NjRfdCB3aW5kCiB9CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKENPQ09BKQotc3RhdGljIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKEJpdG1h
cEltYWdlKiBiaXRtYXApCi17Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IGJpdG1hcC0+Z2V0Q0dJ
bWFnZVJlZigpOwotICAgIEFTU0VSVChDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChpbWFnZSkg
PT0gOCk7Ci0KLSAgICBDR0JpdG1hcEluZm8gaW1hZ2VJbmZvID0gQ0dJbWFnZUdldEJpdG1hcElu
Zm8oaW1hZ2UpOwotICAgIGlmICghKGltYWdlSW5mbyAmIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0
dGxlKSB8fCAoaW1hZ2VJbmZvICYga0NHQml0bWFwQWxwaGFJbmZvTWFzaykgIT0ga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCkgewotICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgYmVp
bmcgYWJsZSB0byBoYW5kbGUgb3RoZXIgcGl4ZWwgZm9ybWF0cy4KLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzaXplX3Qg
d2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpOwotICAgIHNpemVfdCBoZWlnaHQgPSBDR0lt
YWdlR2V0SGVpZ2h0KGltYWdlKTsKLSAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0
Qnl0ZXNQZXJSb3coaW1hZ2UpOwotCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERhdGFQcm92aWRlcihp
bWFnZSkpKTsKLSAgICBjb25zdCBVSW50OCogZGF0YSA9IENGRGF0YUdldEJ5dGVQdHIocHJvdmlk
ZXIuZ2V0KCkpOwotCi0gICAgLy8gT3ZlcmxheSBhIGdyaWQgb2Ygc2FtcGxpbmcgZG90cyBvbiB0
b3Agb2YgYSBncmF5c2NhbGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2UuCi0gICAgLy8gRm9yIHRoZSBp
bnRlcmlvciBwb2ludHMsIGNhbGN1bGF0ZSB0aGUgZGlmZmVyZW5jZSBpbiBsdW1pbmFuY2UgYW1v
bmcgdGhlIHNhbXBsZSBwb2ludAotICAgIC8vIGFuZCBpdHMgc3Vycm91bmRzIHBvaW50cywgc2Nh
bGVkIGJ5IHRyYW5zcGFyZW5jeS4KLSAgICBjb25zdCB1bnNpZ25lZCBzYW1wbGVSb3dzID0gNzsK
LSAgICBjb25zdCB1bnNpZ25lZCBzYW1wbGVDb2xzID0gNzsKLSAgICAvLyBGSVhNRTogUmVmaW5l
IHRoZSBwcm9wZXIgbnVtYmVyIG9mIHNhbXBsZXMsIGFuZCBhY2NvbW1vZGF0ZSBkaWZmZXJlbnQg
YXNwZWN0IHJhdGlvcy4KLSAgICBpZiAod2lkdGggPCBzYW1wbGVDb2xzIHx8IGhlaWdodCA8IHNh
bXBsZVJvd3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEVuc3VyZSB0aGF0IHRo
ZSBsYXN0IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgotICAgIGNvbnN0
IGZsb2F0IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2Ft
cGxlQ29scyAtIDEpOwotICAgIGNvbnN0IGZsb2F0IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0
PGZsb2F0PihoZWlnaHQgLSAxKSAvIChzYW1wbGVSb3dzIC0gMSk7Ci0gICAgZmxvYXQgc2FtcGxl
c1tzYW1wbGVSb3dzXVtzYW1wbGVDb2xzXTsKLQotICAgIC8vIEZpbmQgdGhlIGx1bWluYW5jZSBv
ZiB0aGUgc2FtcGxlIHBvaW50cy4KLSAgICBmbG9hdCB5ID0gMDsKLSAgICBjb25zdCBVSW50OCog
cm93ID0gZGF0YTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2FtcGxlUm93czsgKytp
KSB7Ci0gICAgICAgIGZsb2F0IHggPSAwOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgc2FtcGxlQ29sczsgKytqKSB7Ci0gICAgICAgICAgICBjb25zdCBVSW50OCogcDAgPSByb3cg
KyAoc3RhdGljX2Nhc3Q8aW50Pih4ICsgLjUpKSAqIDQ7Ci0gICAgICAgICAgICAvLyBSIEcgQiBB
Ci0gICAgICAgICAgICBzYW1wbGVzW2ldW2pdID0gKDAuMjEyNSAqICpwMCArIDAuNzE1NCAqICoo
cDArMSkgKyAwLjA3MjEgKiAqKHAwKzIpKSAqICoocDArMykgLyAyNTU7Ci0gICAgICAgICAgICB4
ICs9IHN0cmlkZVdpZHRoOwotICAgICAgICB9Ci0gICAgICAgIHkgKz0gc3RyaWRlSGVpZ2h0Owot
ICAgICAgICByb3cgPSBkYXRhICsgKHN0YXRpY19jYXN0PGludD4oeSArIC41KSkgKiBieXRlc1Bl
clJvdzsKLSAgICB9Ci0KLSAgICAvLyBEZXRlcm1pbmUgdGhlIGltYWdlIHNjb3JlLgotICAgIGZs
b2F0IGFjY3VtU2NvcmUgPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBzYW1wbGVS
b3dzIC0gMTsgKytpKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaiA9IDE7IGogPCBzYW1wbGVD
b2xzIC0gMTsgKytqKSB7Ci0gICAgICAgICAgICBmbG9hdCBkaWZmID0gc2FtcGxlc1tpIC0gMV1b
al0gKyBzYW1wbGVzW2kgKyAxXVtqXSArIHNhbXBsZXNbaV1baiAtIDFdICsgc2FtcGxlc1tpXVtq
ICsgMV0gLSA0ICogc2FtcGxlc1tpXVtqXTsKLSAgICAgICAgICAgIGFjY3VtU2NvcmUgKz0gZGlm
ZiAqIGRpZmY7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBUaGUgc2NvcmUgZm9yIGEgZ2l2
ZW4gc2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgotICAgIHJl
dHVybiBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxlQ29scyAt
IDIpOwotfQotI2VuZGlmCi0KIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZp
cmVkKCkKIHsKICNpZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElD
KQpAQCAtMTgwOSw3ICsxNzQ2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRp
bWVyRmlyZWQoKQogCiAgICAgICAgIGlmIChzbmFwc2hvdEltYWdlKSB7CiAjaWYgRU5BQkxFKFBS
SU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQykKLSAgICAgICAgICAgIGJvb2wgc25h
cHNob3RJc0FsbW9zdFNvbGlkQ29sb3IgPSBpc0FsbW9zdFNvbGlkQ29sb3IoZG93bmNhc3Q8Qml0
bWFwSW1hZ2U+KHNuYXBzaG90SW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIGJvb2wgc25hcHNo
b3RJc0FsbW9zdFNvbGlkQ29sb3IgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PEJpdG1hcEltYWdlPihz
bmFwc2hvdEltYWdlKS0+aXNBbG1vc3RTb2xpZENvbG9yKCk7CiAgICAgICAgICAgICBzbmFwc2hv
dEZvdW5kID0gIXNuYXBzaG90SXNBbG1vc3RTb2xpZENvbG9yOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282738</attachid>
            <date>2016-07-04 17:43:53 -0700</date>
            <delta_ts>2016-07-04 17:43:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155444-20160704174336.patch</filename>
            <type>text/plain</type>
            <size>98152</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTUyOGVmNTIxY2FiOGVm
YmI5NDc1YjQxYzg1Njc0MWE0ZWE2NDE5My4uNmIxNDlhZTUxZWRjNGVkZWM2ODdmZWZkMjJiOTEz
NGU1N2U3ZjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxNi0wNi0yNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgorCisgICAgICAgIFJlbmFt
ZSBGcmFtZURhdGEgdG8gSW1hZ2VGcmFtZURhdGEgYW5kIG1vdmUgaXQgdG8gYSBzZXBhcmF0ZSBm
aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0
NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IEltYWdlRnJhbWVEYXRhIHRvIGEgc2VwYXJhdGUgZmlsZSBzbyBpdCBjYW4gYmUgY2FjaGVkIGJ5
IEltYWdlU291cmNlCisgICAgICAgIGFuZCB3aWxsIHN0aWxsIGJlIGNvbnN1bWVkIGJ5IEJpdG1h
cEltYWdlLiBNYWtlIHRoZSBkYXRhIG1lbWJlcnMgb2YgSW1hZ2VGcmFtZURhdGEKKyAgICAgICAg
YmUgcHJpdmF0ZSBhbmQgYWRkIGdldHRlcnMgdG8gcmV0dXJuIHRoZWlyIHZhbHVlcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgLS0gQ29kZSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3IgY2hhbmdl
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpm
cmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJh
bWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnNp
bmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNB
bG1vc3RTb2xpZENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjp+RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6dXNlZEZyYW1lQnl0ZXMpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZURhdGFBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lt
YWdlRnJhbWVEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6SW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6On5J
bWFnZUZyYW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6Y2xlYXJT
dWJJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmlzQWxtb3N0U29saWRDb2xvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW1hZ2VGcmFtZURhdGEuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWVEYXRhOjppc0NvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWVEYXRhOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpmcmFtZUJ5
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZURhdGE6OnN1YnNhbXBsaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZURhdGE6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVE
YXRhOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aGFzSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc01ldGFkYXRhKToKKwor
MjAxNi0wNi0yNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUsY29tPgor
CisgICAgICAgIEludHJvZHVjZSBQbGF0Zm9ybUltYWdlIGFuZCBtYWtlIGl0IGlzIGEgd3JhcHBl
ciBmb3IgTmF0aXZlSW1hZ2VQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1ODY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyByZWZhY3RvcmluZyBpcyB0byBt
b3ZlIHRoZSBwbGF0Zm9ybSBpbWFnZSBkZXBlbmRlbnQKKyAgICAgICAgY29kZSBmcm9tIEJpdG1h
cEltYWdlIHRvIFBsYXRmb3JtSW1hZ2UuIFBsYXRmb3JtSW1hZ2UgaXMgcmVzcG9uc2libGUgb2Yg
CisgICAgICAgIGRyYXdpbmcgdGhlIGltYWdlIGFuZCBhbnN3ZXJpbmcgTmF0aXZlSW1hZ2VQdHIg
cXVlc3Rpb25zIHdoZW4gYW4gSW1hZ2VEZWNvZGVyCisgICAgICAgIGlzIG5vdCBhdmFpbGFibGUu
IEFwYXJ0IGZyb20gZHJhd2luZyB0aGUgaW1hZ2UsIHRoZSBxdWVyeSBmdW5jdGlvbnMgd2lsbCBi
ZQorICAgICAgICBjYWxsZWQgb25seSB3aGVuIGNvbnN0cnVjdGluZyBhIEZyYW1lRGF0YSBzbyB3
ZSB3aWxsIGtlZXAgZXZlcnl0aGluZyBhcyBhCisgICAgICAgIE5hdGl2ZUltYWdlUHRyLiBCdXQg
d2Ugd2lsbCBjYXN0IHRoZSBOYXRpdmVJbWFnZVB0ciB0byBQbGF0Zm9ybUltYWdlIHdoZW4KKyAg
ICAgICAgYSBwbGF0Zm9ybSBkZXBlbmRlbnQgZnVuY3Rpb24gaXMgbmVlZGVkLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAtLSBDb2RlIHJlZmFjdG9yaW5nLCBubyBiZWhhdmlvciBjaGFuZ2UuCisK
KyAgICAgICAgKiBQbGF0Zm9ybUFwcGxlV2luLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtRWZs
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
TWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luQ2Fpcm8uY21ha2U6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL29i
amMvRE9NLm1tOgorICAgICAgICAoLVtET01Ob2RlIGdldFByZXZpZXdTbmFwc2hvdEltYWdlOmFu
ZFJlY3RzOl0pOgorICAgICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW06Cisg
ICAgICAgICgtW1dlYlRleHRJbmRpY2F0b3JWaWV3IGluaXRXaXRoRnJhbWU6dGV4dEluZGljYXRv
cjptYXJnaW46b2Zmc2V0Ol0pOgorICAgICAgICAoY3JlYXRlQ29udGVudENyb3NzZmFkZUFuaW1h
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpuYXRpdmVJ
bWFnZU9mU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lc05h
dGl2ZUltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c2luZ2xlUGl4ZWxT
b2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjppc0FsbW9zdFNvbGlk
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZURhdGE6OkZyYW1lRGF0YSk6CisgICAgICAgIG1faGFzQWxwaGEgY2FuIGJlIGluaXRpYWxpemVk
IHdpdGggZmFsc2UgYmVjYXVzZSBpdCBpcyBhY2Nlc3NlZCBvbmx5IGluCisgICAgICAgIEJpdG1h
cEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleCgpIGFuZCBpdCBpcyBndWFyZGVkIGJ5IG1faGF2
ZU1ldGFkYXRhLgorICAgICAgICBCb3RoIG1faGF2ZU1ldGFkYXRhIGFuZCBtX2hhc0FscGhhIGFy
ZSBzZXQgaW4gQml0bWFwSW1hZ2UgY29uc3RydWN0b3IKKyAgICAgICAgYW5kIGluIEJpdG1hcElt
YWdlOjpjYWNoZUZyYW1lKCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1l
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OmNsZWFyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Om5hdGl2
ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpuYXRpdmVJbWFnZU9mU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZnJhbWVzTmF0aXZlSW1hZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlOjpnZXRDR0ltYWdlUmVmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpnZXRGaXJzdENHSW1hZ2VSZWZPZlNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmdldENHSW1hZ2VBcnJheSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtSW1hZ2U6OlBsYXRmb3JtSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZTo6aXNOaWwpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2dJbWFnZVJl
Zik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TW9kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1h
cEltYWdlQ2Fpcm8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6Y2xlYXJT
dWJJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1JbWFnZTo6c2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1JbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFw
SW1hZ2VDRy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpjbGVhclN1YkltYWdl
cyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlOjppc0FsbW9zdFNvbGlkQ29sb3IpOiBNb3ZlZCBmcm9tIFBsdWdpblZpZXcuY3Bw
IHNpbmNlIFBsYXRmb3JtSW1hZ2UgaXMgd2hhdCB0aGlzIGZ1bmN0aW9uIGJlbG9uZ3MgdG8uCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKTogUmV0dXJu
cyB0aGUgc3ViLXNhbXBsaW5nIHNjYWxlIGJhc2VkIG9uIHRoZSBjb250ZXh0IHNjYWxpbmcuCisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAg
ICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Z2V0VElGRlJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6dXBkYXRlUGxhdGZvcm1MYXllcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisKIDIwMTYtMDYtMjQgIEJldGggRGFraW4gIDxi
ZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEluY2x1ZGUgZW5jbG9zaW5nTGlzdFR5cGUgaW4g
RWRpdG9yU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0ZDc0NWVkY2EyMjIwYjMzMTEwODQ4NjAx
Yjk3MTBhMjJjMjQ5OWU3Li42ZWU1MmNmNjVhYTllY2UzMWVkOTA0ZWU5NDc5NWM4NjhmOTYxOGRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDYtMjQgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBJbnRyb2R1Y2Ug
UGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9yIE5hdGl2ZUltYWdlUHRy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2Mv
V2ViQ2FjaGUubW06CisgICAgICAgICgrW1dlYkNhY2hlIGltYWdlRm9yVVJMOl0pOgorCiAyMDE2
LTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFBsYXli
YWNrIGNvbnRyb2xzIHJlZmVyIHRvIHdyb25nIGVsZW1lbnQgd2hlbiBwbGF5aW5nIG11bHRpcGxl
IGl0ZW1zIGluIGEgcGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiMzU0OTA3OTMyNmYzMmZmNGU3MGVkY2Ix
MDQyYjJmMWVlMjg2NDM0Li44NjRjNDIzNGQyYjcxNWUxOWMxM2ZhMTgzNmJkMzI5NDBjNTc2OWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDYtMjQgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgUGxhdGZv
cm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9yIE5hdGl2ZUltYWdlUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg2ODQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9jZy9XS0ljb25EYXRhYmFzZUNHLmNwcDoKKyAgICAgICAgKFdLSWNvbkRhdGFiYXNlVHJ5
R2V0Q0dJbWFnZUZvclVSTCk6CisgICAgICAgIChXS0ljb25EYXRhYmFzZVRyeUNvcHlDR0ltYWdl
QXJyYXlGb3JVUkwpOgorICAgICAgICBJdCB3YXMgdGhlIG9ubHkgcGxhY2UgaW4gdGhlIGNvZGUg
d2hpY2ggdXNlcyBCaXRtYXBJbWFnZTo6Z2V0Q0dJbWFnZUFycmF5KCkuCisgICAgICAgIENhbGwg
Qml0bWFwSW1hZ2U6OmZyYW1lc05hdGl2ZUltYWdlcygpIGluc3RlYWQgYW5kIGZvcm0gdGhlIHJl
dHVybmVkCisgICAgICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gYnVpbGQgdGhlIENGQXJyYXlS
ZWYuCisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmVzZW50YXRpb25TbmFwc2hv
dEZvclByZXZpZXdJdGVtQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpblNu
YXBzaG90VGltZXJGaXJlZCk6CisgICAgICAgIAorICAgICAgICAoV2ViS2l0Ojppc0FsbW9zdFNv
bGlkQ29sb3IpOiBEZWxldGVkLgorICAgICAgICBNb3ZlIHRoZSBzdGF0aWMgZnVuY3Rpb24gaXNB
bG1vc3RTb2xpZENvbG9yIHRvIFBsYXRmb3JtSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpLgor
CiAyMDE2LTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFZpbWVvLmNvbSB2aWRlb3MgZG8gbm90IGdldCBwbGF5YmFjayBjb250cm9scwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA3NDY4OTU5MWZkODY5ODMyYzE2NmU3YjljNWVmZGNlODE2ODZiZmFlLi41
MmQ4NjZkODExMzU3YzEyN2ZjNDQxMGUxM2Q3YTI3NDhjMjIzODZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjIzMCw2ICsyMjMwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0lTT1ZUVEN1ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9y
aWVudGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVX
aW4uY21ha2UKaW5kZXggNWZmOTkxZmY3ZGEzMDhiYjkxODJlY2UzYmYxMjE3MzBhNTQ4ZDI4Ny4u
YmFlMzFlYWY4NmU3ZmNhOTA1ODI1MDkyYWEzOGE3OGMxMWU0MjIwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUFwcGxlV2luLmNtYWtlCkBAIC01NSw3ICs1NSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdM
YXllcldpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVy
VHJlZUhvc3QuY3BwCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0
UmVjdENHLmNwcApAQCAtNzUsNiArNzQsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCAzMjlhMTYwNzkxODk4NjEwM2M2MGUwYjYwZDQwY2VlMGVm
NmJjNjgxLi5jZGZkOWFhYmMwY2VkYTVlMzFmYzc3Yzg1MjI0ZmU0ODdkODRiOWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTIyLDcgKzEyMiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKIAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwu
Y3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKQEAgLTEzNCw2ICsxMzMsNyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8u
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9QbGF0Zm9ybVBhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UcmFu
c2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA3
NGU1MTk1YWIwOTQ5NzMyMGZkOWI2YjRlZjk2YjZmZjRlM2IyNDYyLi40OTBiZTQxMWJjNWIyMzJj
MmMwMTgzZWJiYzIxNjg4NTE3ODM1YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
OTgsNyArOTgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGwuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcApAQCAtMTEyLDYgKzExMSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtUGF0aENhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1JlZlB0
ckNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RyYW5zZm9ybWF0aW9uTWF0
cml4Q2Fpcm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNiZjgwZjVkYTdmZWQ5
MzU5NDhkZmRlYzc5MTI3Y2U2NTFkZTQ2ZTMuLjg2YjZiMzRhM2Y2NDhlN2MwZTE1YmVjOTVmY2Rh
MDMwN2ExZGEyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zOTUsNyArMzk1LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvV2ViU3lzdGVtQmFja2Ryb3BMYXllci5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9CaXRtYXBJbWFnZUNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcApAQCAtNDE1LDYgKzQxNCw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
bGF0Zm9ybUltYWdlQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeENHLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbkNhaXJv
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW5DYWlyby5jbWFrZQppbmRleCAyYzU1
M2IwNTUxZGFkNjlhYTE5OWQ5NjBmNTUyMzQzZDkyMGYwN2IzLi5jMjAzMDkxYTkzOWM2ZjdhMjJj
ZmJmODlmODJiMGMzMWVkOTJiYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVdpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luQ2Fpcm8uY21h
a2UKQEAgLTIxLDcgKzIxLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtRGlzcGxheS5jcHAKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdl
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3Bw
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRmxvYXRSZWN0Q2Fpcm8uY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMzQsNiArMzMsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRo
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybVBhdGhDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9SZWZQdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9UcmFuc2Zvcm1hdGlvbk1hdHJpeENhaXJvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIwYzE2NWM1NTQ5MThjM2E0M2Ni
YmZhMDNhMjAwYTNlNGM5MTcwMjMuLjhlOTU3MDllNzUxOWMyZjVmYTliY2ZkMmU0Y2EzODdhNzA5
MjUwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE0ODEsNyArMTQ4MSw3IEBACiAJCTM3NUNEMjMyMTE5RDQzQzgwMEEyQTg1
OSAvKiBIeXBoZW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi87IH07
CiAJCTM3NkRDQ0UxMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVG
QyAvKiBUZXh0UnVuLmNwcCAqLzsgfTsKIAkJMzc3NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92
ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc3NEFCQTMwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVx
dWVzdENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTM3N0EzQTkwMTVFRkNFOUIwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3N0EzQThGMTVFRkNF
OUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLzsgfTsKKwkJMzc3QTNBOTAxNUVGQ0U5
QjAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZv
cm1JbWFnZUNHLmNwcCAqLzsgfTsKIAkJMzc5MTlDMjMwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0
aW9uSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc5MTlDMjEwQjdEMTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuY3BwICov
OyB9OwogCQkzNzkxOUMyNDBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5MTlDMjIwQjdE
MTg4NjAwQTU2OTk4IC8qIFBvc2l0aW9uSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9ICgpOyB9OyB9OwogCQkzNzkyOTE3QTE5ODVFRjM5MDBGNEI2NjEgLyogQ3JlZGVudGlh
bEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVkZW50aWFsQmFzZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMzI4LDYgKzIzMjgsOSBAQAog
CQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1
M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1NTVCODdFQzFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVy
Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1
Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLzsgfTsKIAkJNTU1
Qjg3RUQxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUg
LyogSW1hZ2VEZWNvZGVyQ0cuaCAqLzsgfTsKKwkJNTU3NEYwODcxRDAyNzkwOTAwQjlGMTRDIC8q
IFBsYXRmb3JtSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1NzRGMDg1MUQwMjc0NDQwMEI5RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVDQkE2QTExRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1Q0JBNjlGMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFn
ZUZyYW1lRGF0YS5jcHAgKi87IH07CisJCTU1Q0JBNkEyMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFn
ZUZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTVDQkE2QTAxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTcyQTdGMjExQzZFNTcx
OTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJBN0YyMDFDNkU1NzE5MDA5QzYxNDkgLyogU2ltdWxhdGVk
Q2xpY2suaCAqLzsgfTsKIAkJNTcyQTdGMjMxQzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENs
aWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MkE3RjIyMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5jcHAgKi87IH07CiAJCTU4
MDM3MTYxMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODAzNzE1RjFBNjZGMDBBMDBCQUY1MTkgLyog
Q2xpcFJlY3QuY3BwICovOyB9OwpAQCAtOTA1Nyw3ICs5MDYwLDcgQEAKIAkJMzc2RENDRTAxM0I0
Rjk2NjAwMkVCRUZDIC8qIFRleHRSdW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dFJ1bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NzJC
MDk1MTY1MzU4NTYwMDBBNDlDQSAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQb3B1cE9wZW5pbmdPYnNlcnZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkgLyogT3ZlcmxhcFRl
c3RSZXF1ZXN0Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJs
YXBUZXN0UmVxdWVzdENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzNzdB
M0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRtYXBJbWFnZUNHLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIFBsYXRmb3JtSW1hZ2VD
Ry5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUltYWdl
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzkxOUMyMTBCN0QxODg2MDBB
NTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9zaXRpb25JdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM3OTE5QzIyMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkl0ZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTI5MTc4MTk4NUVGMzkwMEY0QjY2MSAvKiBDcmVk
ZW50aWFsQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFs
QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk5Miw2ICs5OTk1LDkgQEAK
IAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJNTU1Qjg3RUExQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRGVjb2RlckNHLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdl
RGVjb2RlckNHLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rl
ckNHLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NzRGMDg1MUQwMjc0NDQwMEI5
RjE0QyAvKiBQbGF0Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8q
IEltYWdlRnJhbWVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEltYWdlRnJhbWVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVDQkE2
QTAxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEltYWdlRnJhbWVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1RDQwOEY3MUE3QzYzMTgwMEM3ODQ1MCAvKiBTVkdJbWFnZUNsaWVudHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDbGllbnRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0
ZWRDbGljay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0ZWRDbGlj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzJBN0YyMjFDNkU1QTY2MDA5QzYx
NDkgLyogU2ltdWxhdGVkQ2xpY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2ltdWxhdGVkQ2xpY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjIwMzEsNyArMjIwMzcsNiBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAyQ0U2NEYgLyogY2cgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3N0EzQThGMTVF
RkNFOUEwMDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCAqLywKIAkJCQkwRkNGMzMyMzBGMkI5
NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkIwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0UmVjdENHLmNwcCAqLywKQEAgLTIyMDU4LDYgKzIyMDYzLDcgQEAKIAkJCQlBODBB
MzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUzNjBC
MDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1Mzcw
QjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQkzNzdBM0E4RjE1
RUZDRTlBMDA1OUY1QzcgLyogUGxhdGZvcm1JbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0MEZCODE2
NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZD
NDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJ
CQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAg
Ki8sCkBAIC0yMjIwOSw2ICsyMjIxNSw4IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5
IC8qIEltYWdlQnVmZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyog
SW1hZ2VCdWZmZXIuaCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VC
dWZmZXJEYXRhLmggKi8sCisJCQkJNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJh
bWVEYXRhLmNwcCAqLywKKwkJCQk1NUNCQTZBMDFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFt
ZURhdGEuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oICovLAogCQkJCUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9u
LmNwcCAqLywKIAkJCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlv
bi5oICovLApAQCAtMjIyNTgsNiArMjIyNjYsNyBAQAogCQkJCTJENTAwMkZBMUI1NkQ3OTkwMDIw
QUFGNyAvKiBQYXRoVXRpbGl0aWVzLmggKi8sCiAJCQkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5
IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0
ZXJuLmggKi8sCisJCQkJNTU3NEYwODUxRDAyNzQ0NDAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2Uu
aCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICov
LAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0
VHJhY2suaCAqLywKQEAgLTI2MDE4LDYgKzI2MDI3LDcgQEAKIAkJCQk4NUU3MTFCOTBBQzVENTM1
MDA1MzI3MEYgLyogRE9NSFRNTE1hcEVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM1MTU3OUYwQzAzQkJEMzAwOEJCMEVFIC8qIERPTUhUTUxNYXJxdWVlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1MTU2RUEwQzAzQjc0MTAwOEJCMEVFIC8qIERPTUhUTUxNYXJx
dWVlRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk1NTc0RjA4NzFEMDI3OTA5
MDBCOUYxNEMgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRFQzY2NTUx
QzgyRDA0MTAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJERUM2NjUxMUM4MkQwMTYwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFFbGVtZW50SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QkE0RDEzMEFBNjg4NjgwMDg4MDUyRCAvKiBET01I
VE1MTWVudUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0NTgsNiArMjY0NjgsNyBAQAog
CQkJCUQzNTlENzhBMTI5Q0EyNzEwMDA2RTVEMiAvKiBIVE1MRGV0YWlsc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4RUE3OUZBMEExOTE2REYwMEE4RUY1RiAvKiBIVE1MRGlyZWN0b3J5
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdDQjcwQTE5MkI5QzAwQThFRjVGIC8q
IEhUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUNCQTZBMjFEMURGMkUxMDA0
NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3OUY3MEEx
OTE2REYwMEE4RUY1RiAvKiBIVE1MRExpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0YxOThFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzdCMzg2NzEyMjg4M0U5MDBCODFGRjggLyogSFRNTERvY3VtZW50UGFyc2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI5NDEzLDcgKzI5NDI0LDcgQEAKIAkJCQlGREM1NEYwNDEzOTlCMERB
MDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMx
NjAyNjEyQjAyNjc2MDBDMUEzNTkgLyogQmlxdWFkUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4OTk0MzI5MEI0MjMzODgwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogQml0bWFwSW1hZ2VDRy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkzNzdBM0E5MDE1RUZDRTlCMDA1OUY1QzcgLyogUGxhdGZv
cm1JbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFG
NyAvKiBCbG9iLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFREVGMUYzMTIxQjBFRkMwMDcyNkRC
MiAvKiBCbG9iRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUQzMUNEQzE5MTk2MDIwMDAx
MDA1QTMgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk3
NzUsNiArMjk3ODYsNyBAQAogCQkJCTJFMkQ5OUU4MTBFMkJDMUMwMDQ5NjMzNyAvKiBET01CbG9i
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwODlDRDgwQTk4QzQyODAwQTI3NUFBIC8qIERPTUNE
QVRBU2VjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QUNBOTg3MEE5QjUyMDMwMDY3MUU5
MCAvKiBET01DaGFyYWN0ZXJEYXRhLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTVDQkE2QTExRDFE
RjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1
MDg5Q0RBMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTc4RDA3QkUxNDVBMEY2QzAwOTY5MDhEIC8qIERPTUNvcmVFeGNlcHRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODU4QzM4QTYwQUE4RjIwNDAwQjE4N0E0IC8qIERPTUNvdW50ZXIubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggNDAxMWVh
M2ZkOGMwNDY5NzRjNTVkNDhlMzk2ZjFiODNiODFmMzM1ZC4uYTVhYzRmMDVhZTMzOWE4ZDY0NzA2
YzEwZmMwZjdhZjQwNDI1NjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAg
LTYwNiw3ICs2MDYsNyBAQCAtICh2b2lkKWdldFByZXZpZXdTbmFwc2hvdEltYWdlOihDR0ltYWdl
UmVmKiljZ0ltYWdlIGFuZFJlY3RzOihOU0FycmF5ICoqKXJlY3RzCiAKICAgICBpZiAodGV4dElu
ZGljYXRvcikgewogICAgICAgICBpZiAoSW1hZ2UqIGltYWdlID0gdGV4dEluZGljYXRvci0+Y29u
dGVudEltYWdlKCkpCi0gICAgICAgICAgICAqY2dJbWFnZSA9IChDR0ltYWdlUmVmKUNGQXV0b3Jl
bGVhc2UoQ0dJbWFnZVJldGFpbihpbWFnZS0+Z2V0Q0dJbWFnZVJlZigpKSk7CisgICAgICAgICAg
ICAqY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZSgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiByZWN0QXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9U
ZXh0SW5kaWNhdG9yV2luZG93Lm1tCmluZGV4IDM2NGE5YTg3Y2U2ZjA2NjM5NDhiODg0NmU4ZTJj
ZTZkMTkwZjI0ODkuLmE3NGRhODVhY2VjYTNjNjY5OGRkMTU2YWIzMWE2Yzk3MWEzNTRlNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQpAQCAt
MTYyLDkgKzE2Miw5IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJh
bWUgdGV4dEluZGljYXRvcjooUGFzc1JlZlB0cjxUZXh0SW5kaWNhCiAgICAgY29udGVudHNJbWFn
ZUxvZ2ljYWxTaXplLnNjYWxlKDEgLyBfdGV4dEluZGljYXRvci0+Y29udGVudEltYWdlU2NhbGVG
YWN0b3IoKSk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2U7CiAgICAg
aWYgKGluZGljYXRvcldhbnRzQ29udGVudENyb3NzZmFkZSgqX3RleHRJbmRpY2F0b3IpKQotICAg
ICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZVdpdGhIaWdo
bGlnaHQoKS0+Z2V0Q0dJbWFnZVJlZigpOworICAgICAgICBjb250ZW50c0ltYWdlID0gX3RleHRJ
bmRpY2F0b3ItPmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQoKS0+bmF0aXZlSW1hZ2UoKTsKICAg
ICBlbHNlCi0gICAgICAgIGNvbnRlbnRzSW1hZ2UgPSBfdGV4dEluZGljYXRvci0+Y29udGVudElt
YWdlKCktPmdldENHSW1hZ2VSZWYoKTsKKyAgICAgICAgY29udGVudHNJbWFnZSA9IF90ZXh0SW5k
aWNhdG9yLT5jb250ZW50SW1hZ2UoKS0+bmF0aXZlSW1hZ2UoKTsKIAogICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gYm91bmNlTGF5ZXJzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENBS2V5
ZnJhbWVBbmltYXRpb24+IGNyZWF0ZUJvdW5jZUFuaW1hdGlvbihDRlRpbWVJbnRlcnZhbCBkdXJh
dAogc3RhdGljIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcmVhdGVDb250ZW50Q3Jvc3Nm
YWRlQW5pbWF0aW9uKENGVGltZUludGVydmFsIGR1cmF0aW9uLCBUZXh0SW5kaWNhdG9yJiB0ZXh0
SW5kaWNhdG9yKQogewogICAgIFJldGFpblB0cjxDQUJhc2ljQW5pbWF0aW9uPiBjcm9zc2ZhZGVB
bmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5UGF0aDpAImNvbnRl
bnRzIl07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5k
aWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGNvbnRlbnRzSW1hZ2UgPSB0ZXh0SW5kaWNhdG9yLmNvbnRlbnRJbWFnZSgpLT5u
YXRpdmVJbWFnZSgpOwogICAgIFtjcm9zc2ZhZGVBbmltYXRpb24gc2V0VG9WYWx1ZTooaWQpY29u
dGVudHNJbWFnZS5nZXQoKV07CiAgICAgW2Nyb3NzZmFkZUFuaW1hdGlvbiBzZXRGaWxsTW9kZTpr
Q0FGaWxsTW9kZUZvcndhcmRzXTsKICAgICBbY3Jvc3NmYWRlQW5pbWF0aW9uIHNldFJlbW92ZWRP
bkNvbXBsZXRpb246Tk9dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCmluZGV4IDA2NzZjZTA3MjUwNzZiYjk1Y2NkMjZjNWMxYTUyOGQxNjNh
NDY1MmEuLmU4NjI2NDFjYzE3NmJhMzRjNTg1OTA1ZDEzNWQ2M2U4MjJiZjllNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTY4
LDE1ICs2OCwxMyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoTmF0aXZlSW1hZ2VQdHImJiBp
bWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRy
dWUpCiAgICAgLCBtX2FuaW1hdGlvbkZpbmlzaGVkV2hlbkNhdGNoaW5nVXAoZmFsc2UpCiB7Cisg
ICAgbV9mcmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKKyAgICBtX2ZyYW1lcy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShpbWFnZSkpOworICAgIAogICAgIC8vIFNpbmNlIHdlIGRvbid0
IGhhdmUgYSBkZWNvZGVyLCB3ZSBjYW4ndCBmaWd1cmUgb3V0IHRoZSBpbWFnZSBvcmllbnRhdGlv
bi4KICAgICAvLyBTZXQgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uIHRvIGJlIHRoZSBzYW1l
IGFzIG1fc2l6ZSBzbyBpdCdzIG5vdCAweDAuCi0gICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0
aW9uID0gbV9zaXplID0gTmF0aXZlSW1hZ2U6OnNpemUoaW1hZ2UpOworICAgIG1fc2l6ZVJlc3Bl
Y3RpbmdPcmllbnRhdGlvbiA9IG1fc2l6ZSA9IG1fZnJhbWVzWzBdLnNpemUoKTsKICAgICBtX2Rl
Y29kZWRTaXplID0gbV9zaXplLmFyZWEoKSAqIDQ7Ci0gICAgCi0gICAgbV9mcmFtZXMuZ3Jvdygx
KTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhc0FscGhhID0gTmF0aXZlSW1hZ2U6Omhhc0FscGhhKGlt
YWdlKTsKLSAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0gICAgbV9mcmFt
ZXNbMF0ubV9pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOwogfQogCiBCaXRtYXBJbWFnZTo6fkJpdG1h
cEltYWdlKCkKQEAgLTEwNSw3ICsxMDMsNyBAQCBib29sIEJpdG1hcEltYWdlOjpoYXZlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIGlmIChpbmRleCA+PSBtX2ZyYW1lcy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0u
bV9pbWFnZTsKKyAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdlKCk7CiB9CiAKIGJv
b2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKQEAgLTEyNSw5
ICsxMjMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsKQogICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBmcmFtZSBpc24ndCBhY3R1YWxseSBj
aGFuZ2luZyAod2UncmUganVzdCB0cnlpbmcgdG8KICAgICAgICAgLy8gc2F2ZSB0aGUgbWVtb3J5
IGZvciB0aGUgZnJhbWVidWZmZXIgZGF0YSksIHNvIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIKICAg
ICAgICAgLy8gdGhlIG1ldGFkYXRhLgotICAgICAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzID0gbV9m
cmFtZXNbaV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbaV0uY2xlYXIoZmFs
c2UpKQotICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gZnJhbWVCeXRlczsKKyAgICAg
ICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gbV9mcmFtZXNbaV0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6
OkNhY2hpbmc6Ok1ldGFkYXRhKTsKICAgICB9CiAKICAgICBtX3NvdXJjZS5jbGVhcihkZXN0cm95
QWxsLCBjbGVhckJlZm9yZUZyYW1lLCBkYXRhKCksIG1fYWxsRGF0YVJlY2VpdmVkKTsKQEAgLTE1
MCw4ICsxNDYsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vz
c2FyeShib29sIGRlc3Ryb3lBbGwpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGFs
bEZyYW1lQnl0ZXMgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGFsbEZyYW1lQnl0ZXMgKz0gbV9mcmFtZXNbaV0udXNlZEZyYW1l
Qnl0ZXMoKTsKKyAgICBmb3IgKGF1dG8mIGZyYW1lIDogbV9mcmFtZXMpCisgICAgICAgIGFsbEZy
YW1lQnl0ZXMgKz0gZnJhbWUuZnJhbWVCeXRlcygpOwogCiAgICAgaWYgKGFsbEZyYW1lQnl0ZXMg
PiBsYXJnZUFuaW1hdGlvbkN1dG9mZikgewogICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1h
Z2UgJXAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkgZGVzdHJveWluZ0RhdGE6IGFsbEZy
YW1lQnl0ZXM9JXUgY3V0b2ZmPSV1IiwgdGhpcywgYWxsRnJhbWVCeXRlcywgbGFyZ2VBbmltYXRp
b25DdXRvZmYpOwpAQCAtMTc3LDcgKzE3Myw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lN
ZXRhZGF0YUFuZE5vdGlmeSh1bnNpZ25lZCBmcmFtZUJ5dGVzQ2xlYXJlZCwgQ2xlYXJlZFNvCiAg
ICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKHRoaXMsIC1zYWZlQ2Fz
dDxpbnQ+KGZyYW1lQnl0ZXNDbGVhcmVkKSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmNhY2hl
RnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIElt
YWdlRnJhbWVDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3ZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJh
bWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdl
RnJhbWVEYXRhOjpDYWNoaW5nIGNhY2hpbmcpCiB7CiAgICAgc2l6ZV90IG51bUZyYW1lcyA9IGZy
YW1lQ291bnQoKTsKICAgICBBU1NFUlQobV9kZWNvZGVkU2l6ZSA9PSAwIHx8IG51bUZyYW1lcyA+
IDEpOwpAQCAtMTg1LDI1ICsxODEsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW0KICAgICBp
ZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQogICAgICAgICBtX2ZyYW1lcy5ncm93KG51
bUZyYW1lcyk7CiAKLSAgICBpZiAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFt
ZSkgewotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSA9IG1fc291cmNlLmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKLSAgICAgICAgbV9mcmFt
ZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1YnNhbXBsaW5nTGV2ZWw7Ci0gICAgfQot
Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3NvdXJjZS5vcmllbnRhdGlv
bkF0SW5kZXgoaW5kZXgpOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSA9IHRy
dWU7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSA9IG1fc291cmNlLmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoaW5kZXgpOworICAgIG1fZnJhbWVzW2luZGV4XSA9IG1fc291cmNlLmNy
ZWF0ZUZyYW1lRGF0YUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIGNhY2hpbmcpOwog
Ci0gICAgaWYgKHJlcGV0aXRpb25Db3VudChmYWxzZSkgIT0gY0FuaW1hdGlvbk5vbmUpCi0gICAg
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uID0gbV9zb3VyY2UuZnJhbWVEdXJhdGlvbkF0
SW5kZXgoaW5kZXgpOworICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAlcCBjYWNoZUZyYW1l
ICVsdSAoJXMldSBieXRlcywgY29tcGxldGUgJWQpIiwgdGhpcywgaW5kZXgsIGNhY2hpbmcgPT0g
SW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhID8gIm1ldGFkYXRhIG9ubHksICIgOiAi
IiwgbV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSwgbV9mcmFtZXNbaW5kZXhdLmlzQ29tcGxl
dGUoKSk7CiAKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYSA9IG1fc291cmNlLmZyYW1l
SGFzQWxwaGFBdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVz
ID0gbV9zb3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwot
Ci0gICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5
dGVzLCBjb21wbGV0ZSAlZCkiLCB0aGlzLCBpbmRleCwgZnJhbWVDYWNoaW5nID09IENhY2hlTWV0
YWRhdGFPbmx5ID8gIm1ldGFkYXRhIG9ubHksICIgOiAiIiwgbV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWVCeXRlcywgbV9mcmFtZXNbaW5kZXhdLm1faXNDb21wbGV0ZSk7Ci0KLSAgICBpZiAobV9mcmFt
ZXNbaW5kZXhdLm1faW1hZ2UpIHsKLSAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBzYWZlQ2FzdDxp
bnQ+KG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMpOworICAgIGlmIChtX2ZyYW1lc1tpbmRl
eF0uaGFzSW1hZ2UoKSkgeworICAgICAgICBpbnQgZGVsdGFCeXRlcyA9IHNhZmVDYXN0PGludD4o
bV9mcmFtZXNbaW5kZXhdLmZyYW1lQnl0ZXMoKSk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0g
ZGVsdGFCeXRlczsKICAgICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJz
dW1lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVzZWQKICAgICAgICAgLy8gdG8gZGV0ZXJt
aW5lIGltYWdlIHByb3BlcnRpZXMuCkBAIC0yODgsMjEgKzI3MSwxOSBAQCBib29sIEJpdG1hcElt
YWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBmcmFtZSBhZmZl
Y3RlZCBieSBhcHBlbmRpbmcgbmV3IGRhdGEgaGVyZS4gVGh1cyB3ZSBoYXZlIHRvIGNsZWFyIGFs
bCB0aGUKICAgICAvLyBpbmNvbXBsZXRlIGZyYW1lcyB0byBiZSBzYWZlLgogICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNDbGVhcmVkID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnJh
bWVzLnNpemUoKTsgKytpKSB7CisgICAgZm9yIChhdXRvJiBmcmFtZSA6IG1fZnJhbWVzKSB7CiAg
ICAgICAgIC8vIE5PVEU6IERvbid0IGNhbGwgZnJhbWVJc0NvbXBsZXRlQXRJbmRleCgpIGhlcmUs
IHRoYXQgd2lsbCB0cnkgdG8KICAgICAgICAgLy8gZGVjb2RlIGFueSB1bmNhY2hlZCAoaS5lLiBu
ZXZlci1kZWNvZGVkIG9yCiAgICAgICAgIC8vIGNsZWFyZWQtb24tYS1wcmV2aW91cy1wYXNzKSBm
cmFtZXMhCi0gICAgICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXMgPSBtX2ZyYW1lc1tpXS5tX2ZyYW1l
Qnl0ZXM7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXS5tX2hhdmVNZXRhZGF0YSAmJiAhbV9mcmFt
ZXNbaV0ubV9pc0NvbXBsZXRlKQotICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gKG1f
ZnJhbWVzW2ldLmNsZWFyKHRydWUpID8gZnJhbWVCeXRlcyA6IDApOworICAgICAgICBpZiAoZnJh
bWUuaGFzTWV0YWRhdGEoKSAmJiAhZnJhbWUuaXNDb21wbGV0ZSgpKQorICAgICAgICAgICAgZnJh
bWVCeXRlc0NsZWFyZWQgKz0gZnJhbWUuY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVt
cHR5KTsKICAgICB9CiAgICAgZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KGZyYW1lQnl0ZXNDbGVh
cmVkLCBDbGVhcmVkU291cmNlOjpObyk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhp
cyBkaWZmZXJlbnQgZm9yIGlPUz8KICAgICBpbnQgZGVsdGFCeXRlcyA9IDA7CiAgICAgaWYgKCFt
X2ZyYW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFt
ZXMuc2l6ZSgpIC0gMV0ubV9mcmFtZUJ5dGVzOwotICAgICAgICBpZiAobV9mcmFtZXNbbV9mcmFt
ZXMuc2l6ZSgpIC0gMV0uY2xlYXIodHJ1ZSkpIHsKKyAgICAgICAgaWYgKGludCBieXRlcyA9IG1f
ZnJhbWVzW21fZnJhbWVzLnNpemUoKSAtIDFdLmNsZWFyKEltYWdlRnJhbWVEYXRhOjpDYWNoaW5n
OjpFbXB0eSkpIHsKICAgICAgICAgICAgIGRlbHRhQnl0ZXMgKz0gYnl0ZXM7CiAgICAgICAgICAg
ICBkZWx0YUJ5dGVzICs9IG1fZGVjb2RlZFByb3BlcnRpZXNTaXplOwogICAgICAgICAgICAgbV9k
ZWNvZGVkUHJvcGVydGllc1NpemUgPSAwOwpAQCAtMzY2LDE1ICszNDcsMTUgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6aXNTaXplQXZhaWxhYmxlKCkKICAgICByZXR1cm4gbV9zaXplQXZhaWxhYmxlOwog
fQogCi1ib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwg
SW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVDYWNoaW5nKQorYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJl
RnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nIGNhY2hp
bmcpCiB7CiAgICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKQotICAgICAgICB8fCAoZnJh
bWVDYWNoaW5nID09IENhY2hlTWV0YWRhdGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1f
aW1hZ2UpCi0gICAgICAgIHx8IChmcmFtZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYg
IW1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkpCi0gICAgICAgIGNhY2hlRnJhbWUoaW5k
ZXgsIDAsIGZyYW1lQ2FjaGluZyk7CisgICAgICAgIHx8IChjYWNoaW5nID09IEltYWdlRnJhbWVE
YXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlICYmICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1h
Z2UoKSkKKyAgICAgICAgfHwgKGNhY2hpbmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1l
dGFkYXRhICYmICFtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkpCisgICAgICAgIGNhY2hl
RnJhbWUoaW5kZXgsIDAsIGNhY2hpbmcpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zODgs
MTAgKzM2OSw5IEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjCiAKICAgICAvLyBXZSBtYXkgaGF2
ZSBjYWNoZWQgYSBmcmFtZSB3aXRoIGEgaGlnaGVyIHN1YnNhbXBsaW5nIGxldmVsLCBpbiB3aGlj
aCBjYXNlIHdlIG5lZWQgdG8KICAgICAvLyByZS1kZWNvZGUgd2l0aCBhIGxvd2VyIGxldmVsLgot
ICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0ubV9pbWFn
ZSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLm1fc3Vic2FtcGxpbmdMZXZl
bCkgeworICAgIGlmIChpbmRleCA8IG1fZnJhbWVzLnNpemUoKSAmJiBtX2ZyYW1lc1tpbmRleF0u
aGFzSW1hZ2UoKSAmJiBzdWJzYW1wbGluZ0xldmVsIDwgbV9mcmFtZXNbaW5kZXhdLnN1YnNhbXBs
aW5nTGV2ZWwoKSkgewogICAgICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSBjYWNoZWQs
IGJ1dCBhdCB0b28gc21hbGwgYSBzaXplLCByZS1kZWNvZGUgYSBsYXJnZXIgdmVyc2lvbi4KLSAg
ICAgICAgaW50IHNpemVDaGFuZ2UgPSAtbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlczsKLSAg
ICAgICAgbV9mcmFtZXNbaW5kZXhdLmNsZWFyKHRydWUpOworICAgICAgICBpbnQgc2l6ZUNoYW5n
ZSA9IC1tX2ZyYW1lc1tpbmRleF0uY2xlYXIoSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6OkVtcHR5
KTsKICAgICAgICAgaW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogICAgICAgICBtX2RlY29kZWRT
aXplICs9IHNpemVDaGFuZ2U7CiAgICAgICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCkBAIC0zOTks
NDAgKzM3OSw3MiBAQCBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBmbG9hdCBwcmVzZW50YXRpb25TYwogICAgIH0KIAogICAgIC8vIElm
IHdlIGhhdmVuJ3QgZmV0Y2hlZCBhIGZyYW1lIHlldCwgZG8gc28uCi0gICAgaWYgKGluZGV4ID49
IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCi0gICAgICAgIGNh
Y2hlRnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIENhY2hlTWV0YWRhdGFBbmRGcmFtZSk7
CisgICAgaWYgKGluZGV4ID49IG1fZnJhbWVzLnNpemUoKSB8fCAhbV9mcmFtZXNbaW5kZXhdLmhh
c0ltYWdlKCkpCisgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwsIElt
YWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdlKTsKKworICAgIHJldHVybiBt
X2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKK30KKyAgICAKK05hdGl2ZUltYWdlUHRyIEJpdG1hcElt
YWdlOjpuYXRpdmVJbWFnZSgpCit7CisgICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KDApOwor
fQorICAgIAorTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdlT2ZTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCit7CisgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwor
ICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBh
dXRvIGltYWdlID0gZnJhbWVJbWFnZUF0SW5kZXgoaSk7CisgICAgICAgIGlmIChpbWFnZSAmJiBQ
bGF0Zm9ybUltYWdlKGltYWdlKS5zaXplKCkgPT0gc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBp
bWFnZTsKKyAgICB9CisgICAgCisgICAgLy8gRmFsbGJhY2sgdG8gdGhlIGZpcnN0IGZyYW1lIGlt
YWdlIGlmIHdlIGNhbid0IGZpbmQgdGhlIHJpZ2h0IHNpemUKKyAgICByZXR1cm4gZnJhbWVJbWFn
ZUF0SW5kZXgoMCk7Cit9CisgICAgCitOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKQoreworICAgIHJldHVybiBmcmFtZUltYWdlQXRJbmRleCht
X2N1cnJlbnRGcmFtZSk7Cit9CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2U7
CitWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNOYXRpdmVJbWFnZXMo
KQoreworICAgIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gaW1hZ2VzOworICAgIHNpemVfdCBjb3Vu
dCA9IGZyYW1lQ291bnQoKTsKKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKKyAgICAgICAgaWYgKGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRleChpKSkK
KyAgICAgICAgICAgIGltYWdlcy5hcHBlbmQoaW1hZ2UpOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gaW1hZ2VzOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENh
Y2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIElt
YWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pc0NvbXBsZXRlOworICAgIHJldHVybiBt
X2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJ
c0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJ
c0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247Ci19
Ci0KLU5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpCi17Ci0gICAgcmV0dXJuIGZyYW1lSW1hZ2VBdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsKKyAg
ICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLmR1cmF0aW9uKCk7CiB9CiAKIGJvb2wgQml0bWFwSW1h
Z2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3Vy
ZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3Vy
ZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2hhdmVN
ZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5tX2hhc0FscGhhOworICAg
IGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRhdGEoKSkKKyAgICAgICAgcmV0dXJuIG1fZnJh
bWVzW2luZGV4XS5oYXNBbHBoYSgpOwogCiAgICAgcmV0dXJuIG1fc291cmNlLmZyYW1lSGFzQWxw
aGFBdEluZGV4KGluZGV4KTsKIH0KQEAgLTQ0NCwxMSArNDU2LDExIEBAIGJvb2wgQml0bWFwSW1h
Z2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpCiAKIEltYWdlT3JpZW50YXRpb24gQml0
bWFwSW1hZ2U6OmZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBp
ZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENhY2hlTWV0YWRhdGFPbmx5KSkKKyAgICBp
ZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpN
ZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CiAKLSAgICBpZiAo
bV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFkYXRhKQotICAgICAgICByZXR1cm4gbV9mcmFtZXNb
aW5kZXhdLm1fb3JpZW50YXRpb247CisgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5oYXNNZXRhZGF0
YSgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm9yaWVudGF0aW9uKCk7CiAKICAg
ICByZXR1cm4gbV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKIH0KQEAgLTcwMCwx
NyArNzEyLDU2IEBAIENvbG9yIEJpdG1hcEltYWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKQog
ICAgICAgICByZXR1cm4gQ29sb3IoKTsKICAgICAKICAgICBBU1NFUlQobV9mcmFtZXMuc2l6ZSgp
KTsKLSAgICBtX3NvbGlkQ29sb3IgPSBOYXRpdmVJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9y
KG1fZnJhbWVzWzBdLm1faW1hZ2UuZ2V0KCkpOworICAgIG1fc29saWRDb2xvciA9IG1fZnJhbWVz
WzBdLnNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogICAgIAogICAgIEFTU0VSVChtX3NvbGlkQ29s
b3IpOwogICAgIHJldHVybiBtX3NvbGlkQ29sb3IudmFsdWUoKTsKIH0KICAgICAKK2Jvb2wgQml0
bWFwSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpCit7CisgICAgaWYgKGZyYW1lQ291bnQoKSAh
PSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZW5zdXJlRnJhbWVJc0Nh
Y2hlZCgwKSAmJiBtX2ZyYW1lc1swXS5pc0FsbW9zdFNvbGlkQ29sb3IoKTsKK30KKyAgICAKIGJv
b2wgQml0bWFwSW1hZ2U6OmNhbkFuaW1hdGUoKQogewogICAgIHJldHVybiBzaG91bGRBbmltYXRl
KCkgJiYgZnJhbWVDb3VudCgpID4gMTsKIH0KIAordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pCit7CisgICAgaWYgKGRlc3RS
ZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisj
aWYgUExBVEZPUk0oSU9TKQorICAgIHN0YXJ0QW5pbWF0aW9uKERvTm90Q2F0Y2hVcCk7CisjZWxz
ZQorICAgIHN0YXJ0QW5pbWF0aW9uKCk7CisjZW5kaWYKKyAgICAKKyAgICBDb2xvciBjb2xvciA9
IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBjb2xvciwgb3ApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gaW1hZ2UgPSBmcmFtZUltYWdl
QXRJbmRleChtX2N1cnJlbnRGcmFtZSwgUGxhdGZvcm1JbWFnZTo6c3Vic2FtcGxpbmdTY2FsZShj
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCkpOworICAgIGlmICghaW1hZ2UpIC8vIElmIGl0J3Mg
dG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0LgorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbihkZXNjcmlwdGlvbi5pbWFnZU9y
aWVudGF0aW9uKCkpOworICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlv
bigpID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQorICAgICAgICBvcmllbnRhdGlvbiA9IGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICAKKyAgICBQbGF0Zm9y
bUltYWdlKGltYWdlKS5kcmF3KGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBtX3NpemUsIG9w
LCBtb2RlLCBvcmllbnRhdGlvbik7CisgICAgCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAg
ICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOworfQorICAgIAogdm9pZCBCaXRt
YXBJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKIHsKICAgICBJbWFnZTo6ZHVtcCh0
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApp
bmRleCAwNzU4OTI5Y2Q4N2ZhZGFjZjAyYjZlZDhlZWFmZTdkZWZkNjZmMGM1Li4yMjE4YzgyNGI1
MjhmZDYzOWJhYjEzOGRlY2M5OGI5ODE2YTE2ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTI4LDExICsyOCwxMyBAQAogI2lmbmRl
ZiBCaXRtYXBJbWFnZV9oCiAjZGVmaW5lIEJpdG1hcEltYWdlX2gKIAotI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIklt
YWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUg
IkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
SW1hZ2UuaCIKIAogI2lmIFVTRShDRykgfHwgVVNFKEFQUEtJVCkKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CkBAIC00Nyw2MyArNDksOSBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18gKkhC
SVRNQVA7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIHN0cnVjdCBGcmFtZURh
dGE7Ci19Ci0KLW5hbWVzcGFjZSBXVEYgewotICAgIHRlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRy
YWl0czxXZWJDb3JlOjpGcmFtZURhdGE+IDogcHVibGljIFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRz
IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQgPSBm
YWxzZTsgLy8gTm90IGFsbCBGcmFtZURhdGEgbWVtYmVycyBpbml0aWFsaXplIHRvIDAuCi0gICAg
fTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaW1lcjsKIAotbmFtZXNwYWNl
IE5hdGl2ZUltYWdlIHsKLSAgICBJbnRTaXplIHNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsK
LSAgICBib29sIGhhc0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci0gICAgQ29sb3Igc2lu
Z2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7Ci19Ci0KLS8vID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gRnJhbWVEYXRh
IENsYXNzCi0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLQotc3RydWN0IEZyYW1lRGF0YSB7Ci1wdWJsaWM6Ci0gICAgRnJhbWVEYXRhKCkKLSAgICAg
ICAgOiBtX2hhdmVNZXRhZGF0YShmYWxzZSkKLSAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2Up
Ci0gICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+RnJhbWVE
YXRhKCkKLSAgICB7IAotICAgICAgICBjbGVhcih0cnVlKTsKLSAgICB9Ci0KLSAgICAvLyBDbGVh
ciB0aGUgY2FjaGVkIGltYWdlIGRhdGEgb24gdGhlIGZyYW1lLCBhbmQgKG9wdGlvbmFsbHkpIHRo
ZSBtZXRhZGF0YS4KLSAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlcmUgd2FzIGNhY2hlZCBpbWFn
ZSBkYXRhIHRvIGNsZWFyLgotICAgIGJvb2wgY2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKTsKLSAg
ICAKLSAgICB1bnNpZ25lZCB1c2VkRnJhbWVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2Ug
PyBtX2ZyYW1lQnl0ZXMgOiAwOyB9Ci0KLSAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOwotICAg
IEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9u
IH07Ci0gICAgU3Vic2FtcGxpbmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07Ci0gICAg
ZmxvYXQgbV9kdXJhdGlvbiB7IDAgfTsKLSAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKLSAg
ICBib29sIG1faXNDb21wbGV0ZSA6IDE7Ci0gICAgYm9vbCBtX2hhc0FscGhhIDogMTsKLSAgICB1
bnNpZ25lZCBtX2ZyYW1lQnl0ZXMgeyAwIH07Ci19OwotCi0vLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyBCaXRtYXBJbWFnZSBDbGFzcwotLy8g
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCiBjbGFz
cyBCaXRtYXBJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CiAgICAgZnJpZW5kIGNsYXNzIEdl
bmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFzcyBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTsK
QEAgLTE1NSwxMiArMTAzLDYgQEAgcHVibGljOgogICAgIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVz
ZW50YXRpb24oKSBvdmVycmlkZTsKICNlbmRpZgogCi0jaWYgVVNFKENHKQotICAgIFdFQkNPUkVf
RVhQT1JUIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigpIG92ZXJyaWRlOwotICAgIENHSW1hZ2VS
ZWYgZ2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgb3ZlcnJpZGU7Ci0jZW5k
aWYKLQogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29sIGdldEhCSVRNQVAoSEJJVE1BUCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAsIGNvbnN0IEludFNpemUq
KSBvdmVycmlkZTsKQEAgLTE3NCw4ICsxMTYsMTMgQEAgcHVibGljOgogICAgIEV2YXNfT2JqZWN0
KiBnZXRFdmFzT2JqZWN0KEV2YXMqKSBvdmVycmlkZTsKICNlbmRpZgogCisgICAgV0VCQ09SRV9F
WFBPUlQgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZU9mU2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAg
TmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKICAg
ICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uRm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGUg
eyByZXR1cm4gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoY3VycmVudEZyYW1lKCkpOyB9CisgICAg
VmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBmcmFtZXNOYXRpdmVJbWFnZXMoKSBvdmVycmlkZTsKKyAg
ICAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWxtb3N0U29saWRDb2xvcigpOwogCiAgICAg
Ym9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZTsKIApAQCAtMjE1LDcg
KzE2Miw2IEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgZnJhbWVDb3VudCgpOwogCiAgICAgTmF0
aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBmbG9hdCBwcmVzZW50YXRpb25T
Y2FsZUhpbnQgPSAxKTsKLSAgICBOYXRpdmVJbWFnZVB0ciBjb3B5VW5zY2FsZWRGcmFtZUltYWdl
QXRJbmRleChzaXplX3QpOwogCiAgICAgYm9vbCBoYXZlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
KTsKIApAQCAtMjI1LDExICsxNzEsMTAgQEAgcHJvdGVjdGVkOgogICAgIEltYWdlT3JpZW50YXRp
b24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KTsKIAogICAgIC8vIERlY29kZXMgYW5k
IGNhY2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBleGNlcHQgaW50ZXJuYWxseS4KLSAgICBl
bnVtIEltYWdlRnJhbWVDYWNoaW5nIHsgQ2FjaGVNZXRhZGF0YU9ubHksIENhY2hlTWV0YWRhdGFB
bmRGcmFtZSB9OwotICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICB2
b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1l
RGF0YTo6Q2FjaGluZyA9IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdl
KTsKIAogICAgIC8vIENhbGxlZCBiZWZvcmUgYWNjZXNzaW5nIG1fZnJhbWVzW2luZGV4XSBmb3Ig
aW5mbyB3aXRob3V0IGRlY29kaW5nLiBSZXR1cm5zIGZhbHNlIG9uIGluZGV4IG91dCBvZiBib3Vu
ZHMuCi0gICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFt
ZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIGJvb2wgZW5zdXJlRnJhbWVJ
c0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIHRvIGlu
dmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUg
b3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGlt
YWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0yOTIsNyArMjM3LDcgQEAgcHJpdmF0ZToKICAgICBt
dXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOwogCiAgICAgc2l6ZV90
IG1fY3VycmVudEZyYW1lIHsgMCB9OyAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUg
b2YgYW5pbWF0aW9uLgotICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBh
cnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJl
ZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgorICAgIFZlY3RvcjxJbWFnZUZyYW1l
RGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRo
ZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2Fj
aGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJhbWVUaW1lcjsKICAgICBpbnQg
bV9yZXBldGl0aW9uQ291bnQgeyBjQW5pbWF0aW9uTm9uZSB9OyAvLyBIb3cgbWFueSB0b3RhbCBh
bmltYXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRvLiBUaGlzIHdpbGwgYmUgY0FuaW1hdGlvbk5vbmUg
aWYgdGhpcyBpbWFnZSB0eXBlIGlzIGluY2FwYWJsZSBvZiBhbmltYXRpb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA3YTI5OTkyZjc3MTg4ZTAzODI4ZDgw
YTY1YjhiZTJjZDhkYzJkZTc2Li44ZTdiNTJiMWY0ZjMxYzc0YTNjYjJhMTMyMTVkYTc3YTJiMThj
MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTEzNyw4
ICsxMzcsMTEgQEAgcHVibGljOgogCiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBS
b3VuZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCisgICAgdmlydHVhbCBOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIE5h
dGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlT2ZTaXplKGNvbnN0IEludFNpemUmKSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9u
KCk7IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gZnJhbWVzTmF0aXZlSW1h
Z2VzKCkgeyByZXR1cm4geyB9OyB9CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFn
ZSBmb3JtYXRzLgogCkBAIC0xNTAsMTIgKzE1Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENG
RGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5k
aWYKIAotI2lmIFVTRShDRykKLSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Q0dJbWFnZVJlZigp
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIENHSW1hZ2VSZWYgZ2V0Rmlyc3RDR0lt
YWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmly
dHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFnZUFycmF5KCkgeyByZXR1cm4gbnVs
bHB0cjsgfQotI2VuZGlmCi0KICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCBib29sIGdl
dEhCSVRNQVAoSEJJVE1BUCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0
SEJJVE1BUE9mU2l6ZShIQklUTUFQLCBjb25zdCBJbnRTaXplKikgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTE3OSw2ICsxNzYsOCBAQCBwdWJsaWM6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZp
cnR1YWwgYm9vbCBub3RTb2xpZENvbG9yKCkgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCisgICAg
CisgICAgdmlydHVhbCB2b2lkIGxheW91dElmTmVlZGVkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2UxNGI1YmQx
ODA0ODUyMjYwNjMwNGFiZjQ4YTNkY2JiOTk1NzljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCkBAIC0wLDAgKzEs
MTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKworI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgor
I2Vsc2UKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiUGxh
dGZvcm1JbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ltYWdlRnJhbWVEYXRhOjpJ
bWFnZUZyYW1lRGF0YSgpCit7Cit9CisKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0YShO
YXRpdmVJbWFnZVB0ciYmIGltYWdlKQorICAgIDogbV9zdGF0dXMoRGVjb2RpbmdTdGF0dXM6OkNv
bXBsZXRlKQorICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKK3sKKyAgICBtX3NpemUgPSBQ
bGF0Zm9ybUltYWdlKG1faW1hZ2UpLnNpemUoKTsKKyAgICBtX2hhc0FscGhhID0gUGxhdGZvcm1J
bWFnZShtX2ltYWdlKS5oYXNBbHBoYSgpOworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFt
ZURhdGEoSW1hZ2VEZWNvZGVyJiBkZWNvZGVyLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgc3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyBmcmFtZUNhY2hpbmcpCit7CisgICAgQVNTRVJU
KGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRhZGF0YSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2Fj
aGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CisgICAgCisgICAgaWYgKGZyYW1lQ2FjaGluZyA9PSBD
YWNoaW5nOjpJbWFnZSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGFBbmRJbWFn
ZSkgeworICAgICAgICBtX2ltYWdlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChp
bmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9IHN1
YnNhbXBsaW5nTGV2ZWw7CisgICAgfQorICAgIAorICAgIGlmIChmcmFtZUNhY2hpbmcgPT0gQ2Fj
aGluZzo6TWV0YWRhdGEgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5kSW1h
Z2UpIHsKKyAgICAgICAgbV9vcmllbnRhdGlvbiA9IGRlY29kZXIub3JpZW50YXRpb25BdEluZGV4
KGluZGV4KTsKKyAgICAgICAgbV9zdGF0dXMgPSBkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoaW5kZXgpID8gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlIDogRGVjb2RpbmdTdGF0dXM6OlBh
cnRpYWw7CisgICAgICAgIAorICAgICAgICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQoKSAh
PSBjQW5pbWF0aW9uTm9uZSkKKyAgICAgICAgICAgIG1fZHVyYXRpb24gPSBkZWNvZGVyLmZyYW1l
RHVyYXRpb25BdEluZGV4KGluZGV4KTsKKyAgICAgICAgCisgICAgICAgIG1faGFzQWxwaGEgPSBk
ZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICAgICAgbV9zaXplID0gZGVj
b2Rlci5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICB9Cit9
CisKK0ltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEoKQoreworICAgIGNsZWFyU3ViSW1h
Z2VzKCk7Cit9CisKK3ZvaWQgSW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1hZ2VzKCkKK3sKKyAg
ICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBQbGF0Zm9ybUltYWdl
KG1faW1hZ2UpLmNsZWFyU3ViSW1hZ2VzKCk7Cit9CisKK3Vuc2lnbmVkIEltYWdlRnJhbWVEYXRh
OjpjbGVhcihDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAgICBBU1NFUlQoZnJhbWVDYWNoaW5n
ID09IENhY2hpbmc6OkVtcHR5IHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRhZGF0YSk7
CisgICAgCisgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IHRoaXMtPmZyYW1lQnl0ZXMoKTsKKyAg
ICAKKyAgICBjbGVhclN1YkltYWdlcygpOworICAgIAorICAgIGlmIChmcmFtZUNhY2hpbmcgPT0g
Q2FjaGluZzo6RW1wdHkpCisgICAgICAgICp0aGlzID0gSW1hZ2VGcmFtZURhdGEoKTsKKyAgICBl
bHNlCisgICAgICAgIG1faW1hZ2UgPSBudWxscHRyOworICAgIAorICAgIHJldHVybiBmcmFtZUJ5
dGVzOworfQorCitDb2xvciBJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkg
Y29uc3QKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkgfHwgbV9zaXplICE9IEludFNpemUoMSwgMSkp
CisgICAgICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIHJldHVybiBQbGF0Zm9ybUltYWdl
KG1faW1hZ2UpLnNpbmdsZVBpeGVsU29saWRDb2xvcigpOworfQorCitib29sIEltYWdlRnJhbWVE
YXRhOjppc0FsbW9zdFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmICghaGFzSW1hZ2UoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBQbGF0Zm9ybUltYWdlKG1f
aW1hZ2UpLmlzQWxtb3N0U29saWRDb2xvcigpOworfQorICAgIAorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg2
MDQ1NjE0YWExOWJhMWNmZDIwN2FlZDYyNDU4YzRhOTY0ZDNmMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKQEAgLTAs
MCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRl
ICJJbnRTaXplLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VQdHIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBDb2xvcjsKK2NsYXNzIEltYWdlRGVjb2RlcjsKKworLy8gU3Vic2Ft
cGxpbmdMZXZlbC4gMCBpcyBubyBzdWJzYW1wbGluZywgMSBpcyBoYWxmIGRpbWVuc2lvbnMgb24g
ZWFjaCBheGlzIGV0Yy4KK3VzaW5nIFN1YnNhbXBsaW5nTGV2ZWwgPSB1aW50OF90OworCitlbnVt
IDogU3Vic2FtcGxpbmdMZXZlbCB7CisgICAgTWluU3Vic2FtcGxpbmdMZXZlbCA9IDAsCisgICAg
TWF4U3Vic2FtcGxpbmdMZXZlbCA9IDMsCisgICAgRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwgPSBN
aW5TdWJzYW1wbGluZ0xldmVsCit9OworCitjbGFzcyBJbWFnZUZyYW1lRGF0YSB7CitwdWJsaWM6
CisgICAgZW51bSBjbGFzcyBDYWNoaW5nIHsgRW1wdHksIE1ldGFkYXRhLCBJbWFnZSwgTWV0YWRh
dGFBbmRJbWFnZSB9OworICAgIGVudW0gY2xhc3MgRGVjb2RpbmdTdGF0dXMgeyBFbXB0eSwgUGFy
dGlhbCwgQ29tcGxldGUgfTsKKyAgICAKKyAgICBJbWFnZUZyYW1lRGF0YSgpOworICAgIEltYWdl
RnJhbWVEYXRhKE5hdGl2ZUltYWdlUHRyJiYpOworICAgIEltYWdlRnJhbWVEYXRhKEltYWdlRGVj
b2RlciYsIHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGlu
Z0xldmVsLCBDYWNoaW5nID0gQ2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CisgICAgCisgICAg
fkltYWdlRnJhbWVEYXRhKCk7CisgICAgCisgICAgdW5zaWduZWQgY2xlYXIoQ2FjaGluZyk7Cisg
ICAgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgYm9vbCBpc0FsbW9z
dFNvbGlkQ29sb3IoKSBjb25zdDsKKyAgICAKKyAgICBEZWNvZGluZ1N0YXR1cyBzdGF0dXMoKSBj
b25zdCB7IHJldHVybiBtX3N0YXR1czsgfQorICAgIGJvb2wgaXNDb21wbGV0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdHVzID09IERlY29kaW5nU3RhdHVzOjpDb21wbGV0ZTsgfQorICAgIEludFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHVuc2lnbmVkIGZyYW1lQnl0
ZXMoKSBjb25zdCB7IHJldHVybiBoYXNJbWFnZSgpID8gbV9zaXplLmFyZWEoKSAqIDQgOiAwOyB9
CisgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9Cisg
ICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZW50YXRpb247IH0KKyAgICBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwoKSBj
b25zdCB7IHJldHVybiBtX3N1YnNhbXBsaW5nTGV2ZWw7IH0KKyAgICBmbG9hdCBkdXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKyAgICAKKyAgICBib29sIGhhc0FscGhhKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNBbHBoYTsgfQorICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX2ltYWdlOyB9CisgICAgYm9vbCBoYXNNZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJu
ICFtX3NpemUuaXNFbXB0eSgpOyB9CisgICAgCitwcml2YXRlOgorICAgIHZvaWQgY2xlYXJTdWJJ
bWFnZXMoKTsKKyAgICAKKyAgICBEZWNvZGluZ1N0YXR1cyBtX3N0YXR1cyB7IERlY29kaW5nU3Rh
dHVzOjpFbXB0eSB9OworICAgIEludFNpemUgbV9zaXplOworICAgIE5hdGl2ZUltYWdlUHRyIG1f
aW1hZ2U7CisgICAgCisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgRGVmYXVs
dEltYWdlT3JpZW50YXRpb24gfTsKKyAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdM
ZXZlbCB7IDAgfTsKKyAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9OworICAgIGJvb2wgbV9oYXNB
bHBoYSB7IHRydWUgfTsKK307CisgICAgCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZGRkOGE1NWJhMDkwNmM1ODY2YTE5MmNm
OGU0MTRlYTcwN2I3MjhhYy4uODJmNmUyZDZlNDU0MzNkYTFhN2Q1NmIzNzBkZmE2MWE0YzQxOTEz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcApAQCAtMjI0LDYgKzIyNCwxMSBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldgogICAgIHJl
dHVybiBpbml0aWFsaXplZCgpID8gbV9kZWNvZGVyLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChp
bmRleCwgc3Vic2FtcGxpbmdMZXZlbCkgOiBudWxscHRyOwogfQogCitJbWFnZUZyYW1lRGF0YSBJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgY2FjaGlu
ZykKK3sKKyAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IEltYWdlRnJhbWVEYXRhKCptX2RlY29k
ZXIsIGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBjYWNoaW5nKSA6IEltYWdlRnJhbWVEYXRhKCk7
Cit9CisgICAgCiB2b2lkIEltYWdlU291cmNlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAog
ewogICAgIGlmIChtX2FsbG93U3Vic2FtcGxpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA2MDM1NzM5YjdlOGIwOTZkYzhkZmU5YzUz
MGE0MmM2ZjI5MWJkYTAwLi5hNDBjN2NlOTMwN2NkYWRmMDc5YWI3MDFhODI3OTliNjkwNTI5ZDQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgK
QEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW1hZ2VTb3VyY2VfaAogI2RlZmluZSBJbWFnZVNv
dXJjZV9oCiAKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT3Jp
ZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIk5hdGl2ZUltYWdl
UHRyLmgiCkBAIC02Myw5ICs2NCw2IEBAIGNvbnN0IGludCBjQW5pbWF0aW9uTG9vcE9uY2UgPSAw
OwogY29uc3QgaW50IGNBbmltYXRpb25Mb29wSW5maW5pdGUgPSAtMTsKIGNvbnN0IGludCBjQW5p
bWF0aW9uTm9uZSA9IC0yOwogCi0vLyBTdWJzYW1wbGluZ0xldmVsLiAwIGlzIG5vIHN1YnNhbXBs
aW5nLCAxIGlzIGhhbGYgZGltZW5zaW9ucyBvbiBlYWNoIGF4aXMgZXRjLgotdHlwZWRlZiBzaG9y
dCBTdWJzYW1wbGluZ0xldmVsOwotCiBjbGFzcyBJbWFnZVNvdXJjZSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW1hZ2VTb3VyY2UpOwogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsK
QEAgLTEzMiwxOCArMTMwLDE5IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93U3Vic2FtcGxpbmdP
ZkZyYW1lQXRJbmRleChzaXplX3QpIGNvbnN0OwogICAgIAogICAgIC8vIFNpemUgb2Ygb3B0aW9u
YWxseSBzdWJzYW1wbGVkIGZyYW1lLgotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBE
b05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKSBjb25zdDsKKyAgICBJbnRTaXplIGZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2
ZWwsIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSA9IERvTm90UmVzcGVjdEltYWdlT3JpZW50
YXRpb24pIGNvbnN0OwogICAgIAogICAgIC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGlu
IHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0aGUgZnJhbWUgaXMgbm90IHlldAogICAgIC8vIGRlY29k
ZWQgdGhlbiByZXR1cm4gMC4KLSAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSAwKSBjb25zdDsKKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCkg
Y29uc3Q7CiAgICAgCiAgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKICAg
ICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OyAvLyBF
WElGIGltYWdlIG9yaWVudGF0aW9uCiAgICAgCiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNh
bGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFyKCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAv
LyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBhYm92ZS4KLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSAwKTsKKyAgICBO
YXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCk7CisgICAgSW1hZ2VGcmFtZURhdGEgY3Jl
YXRlRnJhbWVEYXRhQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBEZWZhdWx0U3Vi
c2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmcgPSBJbWFnZUZyYW1lRGF0YTo6
Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CiAgICAgCiBwcml2YXRlOgogICAgIHZvaWQgY2xl
YXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI3YWVhNDg5ZjNlYjJhODI4
NzcxYzIxMDNlOGQ0ZDBiZTE3YmU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaApAQCAtMCwwICsxLDY0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24u
aCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENvbG9yOworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIEdy
YXBoaWNzQ29udGV4dDsKKworY2xhc3MgUGxhdGZvcm1JbWFnZSB7CitwdWJsaWM6CisgICAgUGxh
dGZvcm1JbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCisgICAgICAgIDogbV9pbWFn
ZShpbWFnZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc05pbCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2ltYWdlOyB9CisgICAgdm9pZCBjbGVhclN1YkltYWdlcygpOworCisgICAgSW50U2l6ZSBz
aXplKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OworICAgIENvbG9yIHNpbmds
ZVBpeGVsU29saWRDb2xvcigpIGNvbnN0OworICAgIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKCkg
Y29uc3Q7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6
ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgY29uc3QgSW1hZ2VPcmllbnRhdGlvbiYp
IGNvbnN0OworCisgICAgc3RhdGljIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
KTsKKworcHJpdmF0ZToKKyNpZiBVU0UoQ0cpCisgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlUmVmKCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2UuZ2V0KCkgOiBudWxscHRyOyB9CisjZW5k
aWYKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tCmluZGV4IGY0YzE0NTdiYmIyNTU3NTRmMDBhMDYyNWVlODNlMDRkYTdjNmVmY2Yu
LmQ1MjBmNWQ1ODVhYzYwZGJhZWUyNTVlMWI4M2MyNGRjNjg3MjEwYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0KQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUoKQogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBtX3Bh
dXNlZEltYWdlID0gaW1hZ2UtPmdldENHSW1hZ2VSZWYoKTsKKyAgICAgICAgICAgICAgICBtX3Bh
dXNlZEltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFtX3BhdXNlZEltYWdlKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZGlz
cGxheU1vZGUgPSBQYWludEl0QmxhY2s7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc3MjJi
ZWM1M2FiOGEwOGE4ZGE4NTI4YjllMGQ3YzRkMGNkNDEzNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBA
YXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Vi
a2l0Lm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCi0KLSNpZiBVU0UoQ0FJ
Uk8pCi0KLSNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1ZGUgIkltYWdlT2JzZXJ2
ZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgotI2luY2x1ZGUgIlRpbWVy
LmgiCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgTmF0aXZlSW1hZ2UgewotCi1JbnRTaXplIHNpemUoY29uc3QgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4mIGltYWdlKQotewotICAgIHJldHVybiBjYWlyb1N1cmZhY2VTaXplKGltYWdlLmdldCgp
KTsKLX0KLQotYm9vbCBoYXNBbHBoYShjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1h
Z2UpCi17Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoaW1hZ2UuZ2V0KCkp
ICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7Ci19Ci0KLUNvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xv
cihjb25zdCBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiYgaW1hZ2UpCi17Ci0gICAgQVNTRVJUKGlt
YWdlKTsKLSAgICAKLSAgICBpZiAoTmF0aXZlSW1hZ2U6OnNpemUoaW1hZ2UpICE9IEludFNpemUo
MSwgMSkpCi0gICAgICAgIHJldHVybiBDb2xvcigpOwotCi0gICAgaWYgKGNhaXJvX3N1cmZhY2Vf
Z2V0X3R5cGUoaW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKLSAgICAg
ICAgcmV0dXJuIENvbG9yKCk7Ci0KLSAgICBSR0JBMzIqIHBpeGVsID0gcmVpbnRlcnByZXRfY2Fz
dF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZS5nZXQoKSkp
OwotICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWwpOwotfQotCi19
Ci0KLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLAotICAgIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKLXsKLSAgICBpZiAoIWRzdC53aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkg
fHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHN0YXJ0QW5pbWF0aW9uKCk7Ci0KLSAgICBhdXRvIHN1cmZhY2UgPSBmcmFtZUltYWdlQXRJbmRl
eChtX2N1cnJlbnRGcmFtZSk7Ci0gICAgaWYgKCFzdXJmYWNlKSAvLyBJZiBpdCdzIHRvbyBlYXJs
eSB3ZSB3b24ndCBoYXZlIGFuIGltYWdlIHlldC4KLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ29s
b3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxp
ZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkc3QsIGNvbG9yLCBv
cCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb250ZXh0LnNhdmUoKTsKLQotICAg
IC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgotICAgIGlmIChvcCA9PSBDb21wb3Np
dGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVuZE1vZGVOb3JtYWwgJiYgIWZyYW1lSGFz
QWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKLSAgICAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7Ci0gICAgZWxzZQotICAgICAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKLQotI2lmIEVOQUJMRShJTUFHRV9E
RUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJm
YWNlU2l6ZShzdXJmYWNlLmdldCgpKTsKLSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0g
YWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGluZyhzcmMsIHNjYWxlZFNpemUpOwotI2Vsc2UK
LSAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0KHNyYyk7Ci0jZW5kaWYKLQotICAgIEltYWdl
T3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbihkZXNjcmlwdGlvbi5pbWFnZU9yaWVudGF0aW9u
KCkpOwotICAgIGlmIChkZXNjcmlwdGlvbi5yZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpID09IFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKQotICAgICAgICBmcmFtZU9yaWVudGF0aW9uID0gZnJhbWVP
cmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotCi0gICAgRmxvYXRSZWN0IGRzdFJl
Y3QgPSBkc3Q7Ci0KLSAgICBpZiAoZnJhbWVPcmllbnRhdGlvbiAhPSBEZWZhdWx0SW1hZ2VPcmll
bnRhdGlvbikgewotICAgICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdp
biB0byBiZSBhdCAoMCwgMCkuCi0gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgp
LCBkc3RSZWN0LnkoKSk7Ci0gICAgICAgIGRzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgp
KTsKLSAgICAgICAgY29udGV4dC5jb25jYXRDVE0oZnJhbWVPcmllbnRhdGlvbi50cmFuc2Zvcm1G
cm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOwotICAgICAgICBpZiAoZnJhbWVPcmllbnRhdGlv
bi51c2VzV2lkdGhBc0hlaWdodCgpKSB7Ci0gICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24g
cmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNl
ZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCi0gICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0
IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFj
ayBoZXJlLgotICAgICAgICAgICAgZHN0UmVjdCA9IEZsb2F0UmVjdChkc3RSZWN0LngoKSwgZHN0
UmVjdC55KCksIGRzdFJlY3QuaGVpZ2h0KCksIGRzdFJlY3Qud2lkdGgoKSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29u
dGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGNvbnRleHQpOwot
Ci0gICAgY29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQotICAg
ICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7Ci19Ci0KLWJvb2wgRnJhbWVEYXRh
OjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0g
ICAgICAgIG1faGF2ZU1ldGFkYXRhID0gZmFsc2U7Ci0KLSAgICBpZiAobV9pbWFnZSkgewotICAg
ICAgICBtX2ltYWdlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
VVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGxhdGZvcm1JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBhZGFlYzI3
MGUzMWIwNTRhZmM1ZjY2ZDQ4Mjg4YWViZjA2MWUzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAK
QEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtSW1hZ2UuaCIK
KworI2lmIFVTRShDQUlSTykKKworI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNsdWRlIDxjYWlyby5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3ZvaWQgUGxhdGZvcm1JbWFnZTo6Y2xlYXJTdWJJbWFnZXMoKQorewor
fQorCitJbnRTaXplIFBsYXRmb3JtSW1hZ2U6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBp
c05pbCgpID8gSW50U2l6ZSgpIDogY2Fpcm9TdXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKK30K
KworYm9vbCBQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlz
TmlsKCkgfHwgY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChtX2ltYWdlLmdldCgpKSAhPSBDQUlS
T19DT05URU5UX0NPTE9SOworfQorCitDb2xvciBQbGF0Zm9ybUltYWdlOjpzaW5nbGVQaXhlbFNv
bGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmIChpc05pbCgpIHx8IHNpemUoKSAhPSBJbnRTaXpl
KDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKworICAgIGlmIChjYWlyb19zdXJmYWNl
X2dldF90eXBlKG1faW1hZ2UuZ2V0KCkpICE9IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSkKKyAg
ICAgICAgcmV0dXJuIENvbG9yKCk7CisKKyAgICBSR0JBMzIqIHBpeGVsID0gcmVpbnRlcnByZXRf
Y2FzdF9wdHI8UkdCQTMyKj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShtX2ltYWdlLmdl
dCgpKSk7CisgICAgcmV0dXJuIGNvbG9yRnJvbVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7Cit9
CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Zsb2F0IFBsYXRmb3JtSW1hZ2U6OnN1YnNhbXBsaW5nU2Nh
bGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JikK
K3sKKyAgICByZXR1cm4gMTsKK30KKwordm9pZCBQbGF0Zm9ybUltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9uJiBvcmllbnRhdGlvbikgY29uc3QKK3sK
KyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAKKyAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9w
ZXJhdGlvbi4KKyAgICBpZiAob3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBtb2RlID09IEJs
ZW5kTW9kZU5vcm1hbCAmJiAhaGFzQWxwaGEoKSkKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgbW9kZSk7CisgICAgICAgIAorI2lmIEVOQUJMRShJTUFH
RV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9T
dXJmYWNlU2l6ZShtX2ltYWdlLmdldCgpKTsKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0
ID0gYWRqdXN0U291cmNlUmVjdEZvckRvd25TYW1wbGluZyhzcmNSZWN0LCBzY2FsZWRTaXplKTsK
KyNlbHNlCisgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdChzcmNSZWN0KTsKKyNlbmRpZgor
ICAgICAgICAKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWREZXN0UmVjdCA9IGRlc3RSZWN0OworICAg
ICAgICAKKyAgICBpZiAob3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pIHsK
KyAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQg
KDAsIDApLgorICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0
LnkoKSk7CisgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgp
KTsKKyAgICAgICAgY29udGV4dC5jb25jYXRDVE0ob3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURl
ZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKKyAgICAgICAgaWYgKG9yaWVudGF0aW9u
LnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiBy
ZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2Vk
IGZvciB0aGUgb3JpZW50YXRpb24gb2YKKyAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQg
d2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNr
IGhlcmUuCisgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldFNpemUoYWRqdXN0ZWREZXN0
UmVjdC5zaXplKCkudHJhbnNwb3NlZFNpemUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChtX2ltYWdlLmdl
dCgpLCBhZGp1c3RlZERlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGNvbnRleHQpOworCisgICAg
Y29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAz
YzgxYTE3MGJlNzlhZTZiZTZjYWNkYzk5ZjRjMzk4Y2FhZjQyNmQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKLQotI2lm
IFVTRShDRykKLQotI2luY2x1ZGUgIkNvcmVHcmFwaGljc1NQSS5oIgotI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0Q0cuaCIKLSNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCi0jaW5jbHVk
ZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LQotI2lmIFVTRShBUFBLSVQpCi0jaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNh
dGlvblNlcnZpY2VzLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUg
IldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQot
I2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
LSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBOYXRpdmVJbWFnZSB7
Ci0KLUludFNpemUgc2l6ZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlKQotewot
ICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgcmV0dXJuIEludFNpemUoQ0dJbWFnZUdldFdpZHRoKGlt
YWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpOwotfQotCi1ib29sIGhh
c0FscGhhKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYpCi17Ci0gICAgLy8gRklYTUU6IEFu
c3dlciBjb3JyZWN0bHkgdGhlIHF1ZXN0aW9uOiBkb2VzIHRoZSBDR0ltYWdlUmVmIGhhdmUgYWxw
aGEgY2hhbm5uZWw/Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0gICAgCi1Db2xvciBzaW5nbGVQaXhl
bFNvbGlkQ29sb3IoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSkKLXsKLSAgICBB
U1NFUlQoaW1hZ2UpOwotICAgIAotICAgIGlmIChOYXRpdmVJbWFnZTo6c2l6ZShpbWFnZSkgIT0g
SW50U2l6ZSgxLCAxKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7Ci0gICAgCi0gICAgdW5zaWdu
ZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQotICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBz
UkdCQ29sb3JTcGFjZVJlZigpLAotICAgICAgICBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExh
c3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwotCi0gICAgaWYgKCFiaXRtYXBDb250ZXh0
KQotICAgICAgICByZXR1cm4gQ29sb3IoKTsKLSAgICAKLSAgICBDR0NvbnRleHRTZXRCbGVuZE1v
ZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7Ci0gICAgQ0dDb250ZXh0
RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSksIGlt
YWdlLmdldCgpKTsKLSAgICAKLSAgICBpZiAoIXBpeGVsWzNdKQotICAgICAgICByZXR1cm4gQ29s
b3IoMCwgMCwgMCwgMCk7Ci0KLSAgICByZXR1cm4gQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhl
bFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFsz
XSwgcGl4ZWxbM10pOwotfQotCi19Ci0KLWJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFy
TWV0YWRhdGEpCi17Ci0gICAgaWYgKGNsZWFyTWV0YWRhdGEpCi0gICAgICAgIG1faGF2ZU1ldGFk
YXRhID0gZmFsc2U7Ci0KLSAgICBtX3N1YnNhbXBsaW5nTGV2ZWwgPSAwOwotCi0gICAgaWYgKG1f
aW1hZ2UpIHsKLSNpZiBDQUNIRV9TVUJJTUFHRVMKLSAgICAgICAgc3ViaW1hZ2VDYWNoZSgpLmNs
ZWFySW1hZ2UobV9pbWFnZS5nZXQoKSk7Ci0jZW5kaWYKLSAgICAgICAgbV9pbWFnZSA9IG51bGxw
dHI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LUNHSW1hZ2VSZWYgQml0bWFwSW1hZ2U6OmdldENHSW1hZ2VSZWYoKQotewotICAgIHJldHVybiBm
cmFtZUltYWdlQXRJbmRleCgwKS5nZXQoKTsKLX0KLQotQ0dJbWFnZVJlZiBCaXRtYXBJbWFnZTo6
Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZTaXplKGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgc2l6
ZV90IGNvdW50ID0gZnJhbWVDb3VudCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewotICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBmcmFtZUltYWdlQXRJbmRl
eChpKS5nZXQoKTsKLSAgICAgICAgaWYgKGNnSW1hZ2UgJiYgSW50U2l6ZShDR0ltYWdlR2V0V2lk
dGgoY2dJbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFnZSkpID09IHNpemUpCi0gICAgICAg
ICAgICByZXR1cm4gY2dJbWFnZTsKLSAgICB9Ci0KLSAgICAvLyBGYWxsYmFjayB0byB0aGUgZGVm
YXVsdCBDR0ltYWdlUmVmIGlmIHdlIGNhbid0IGZpbmQgdGhlIHJpZ2h0IHNpemUKLSAgICByZXR1
cm4gZ2V0Q0dJbWFnZVJlZigpOwotfQotCi1SZXRhaW5QdHI8Q0ZBcnJheVJlZj4gQml0bWFwSW1h
Z2U6OmdldENHSW1hZ2VBcnJheSgpCi17Ci0gICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDb3VudCgp
OwotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIENG
TXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoTlVMTCwgY291bnQs
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewotICAgICAgICBpZiAoQ0dJbWFnZVJlZiBjdXJyRnJhbWUgPSBmcmFtZUltYWdl
QXRJbmRleChpKS5nZXQoKSkKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheSwg
Y3VyckZyYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGFkb3B0Q0YoYXJyYXkpOwotfQotCi12b2lk
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uIGRlc2NyaXB0aW9uKQotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBzdGFydEFuaW1hdGlv
bihEb05vdENhdGNoVXApOwotI2Vsc2UKLSAgICBzdGFydEFuaW1hdGlvbigpOwotI2VuZGlmCi0K
LSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgLy8gTmV2ZXIgdXNlIHN1YnNh
bXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlmICh3a0NH
Q29udGV4dElzUERGQ29udGV4dChjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSkKLSAgICAgICAgaW1h
Z2UgPSBjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVj
dEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY3R4dC5wbGF0
Zm9ybUNvbnRleHQoKSkpOwotICAgICAgICBmbG9hdCBzdWJzYW1wbGluZ1NjYWxlID0gc3RkOjpt
aW48ZmxvYXQ+KDEsIHN0ZDo6bWF4KHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNpemUud2lk
dGggLyBzcmNSZWN0LndpZHRoKCksIHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0LnNpemUuaGVp
Z2h0IC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotCi0gICAgICAgIGltYWdlID0gZnJhbWVJbWFnZUF0
SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOwotICAgIH0KLQotICAgIGlm
ICghaW1hZ2UpIC8vIElmIGl0J3MgdG9vIGVhcmx5IHdlIHdvbid0IGhhdmUgYW4gaW1hZ2UgeWV0
LgotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNv
bGlkQ29sb3IoKTsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRo
U29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3IsIGNvbXBvc2l0ZU9wKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFu
IGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KLSAgICBJbnRTaXplIGltYWdlU2l6
ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdl
dCgpKSk7Ci0gICAgCi0gICAgLy8gc3JjUmVjdCBpcyBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhl
IHVuc3Vic2FtcGxlZCBpbWFnZSwgc28gd2UgaGF2ZSB0byBtYXAgaXQgdG8gdGhlIHN1YnNhbXBs
ZWQgaW1hZ2UuCi0gICAgRmxvYXRSZWN0IHNjYWxlZFNyY1JlY3QgPSBzcmNSZWN0OwotICAgIGlm
IChpbWFnZVNpemUgIT0gbV9zaXplKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBvcmlnaW5hbEltYWdl
Qm91bmRzKEZsb2F0UG9pbnQoKSwgbV9zaXplKTsKLSAgICAgICAgRmxvYXRSZWN0IHN1YnNhbXBs
ZWRJbWFnZUJvdW5kcyhGbG9hdFBvaW50KCksIGltYWdlU2l6ZSk7Ci0gICAgICAgIHNjYWxlZFNy
Y1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIG9yaWdpbmFsSW1hZ2VCb3VuZHMsIHN1YnNhbXBsZWRJ
bWFnZUJvdW5kcyk7Ci0gICAgfQotICAgIAotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b247Ci0gICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVz
cGVjdEltYWdlT3JpZW50YXRpb24pCi0gICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRh
dGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwotCi0gICAgY3R4dC5kcmF3TmF0aXZlSW1hZ2Uo
aW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBi
bGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKLQotICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdyh0aGlzKTsKLX0KLQotUmV0YWluUHRyPENHSW1h
Z2VSZWY+IEJpdG1hcEltYWdlOjpjb3B5VW5zY2FsZWRGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgpCi17Ci0gICAgaWYgKGluZGV4ID49IGZyYW1lQ291bnQoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1l
c1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgMCk7Ci0KLSAgICBp
ZiAoIW1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwpCi0gICAgICAgIHJldHVybiBt
X2ZyYW1lc1tpbmRleF0ubV9pbWFnZTsKLQotICAgIHJldHVybiBtX3NvdXJjZS5jcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChpbmRleCk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4
IGI0MjhkNTBkOTRiZjkyNDI4MDMyODdkMmVlYzE2YmQ2OWM1MjhkOTIuLjNkYWExMzlhYjdlYTVi
NDIxNTc3ODgzNWQzNTNkOGFkYjVmMGM3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtNzIsNyArNzIsNyBAQCBDR1BhdHRl
cm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVj
dGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBv
ZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCiAg
ICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCi0gICAgICAgIHJldHVybiB3a0NHUGF0dGVy
bkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybSh0aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJlZigp
LCBwYXR0ZXJuVHJhbnNmb3JtLCB3a1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOworICAg
ICAgICByZXR1cm4gd2tDR1BhdHRlcm5DcmVhdGVXaXRoSW1hZ2VBbmRUcmFuc2Zvcm0odGlsZUlt
YWdlKCktPm5hdGl2ZUltYWdlKCkuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIHdrUGF0dGVyblRp
bGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJl
IHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFj
dGlvbnMgb2YgRkxUX01BWCBhbHNvCiAgICAgLy8gcmVzdWx0IGluIG5vdGhpbmcgYmVpbmcgcmVu
ZGVyZWQuCkBAIC04Myw3ICs4Myw3IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgQ0dG
bG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKDEgPDwgMjIpOwog
CiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQn
cyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrCi0gICAgQ0dJbWFnZVJl
ZiBwbGF0Zm9ybUltYWdlID0gQ0dJbWFnZVJldGFpbih0aWxlSW1hZ2UoKS0+Z2V0Q0dJbWFnZVJl
ZigpKTsKKyAgICBDR0ltYWdlUmVmIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZl
SW1hZ2UoKS5sZWFrUmVmKCk7CiAKICAgICBjb25zdCBDR1BhdHRlcm5DYWxsYmFja3MgcGF0dGVy
bkNhbGxiYWNrcyA9IHsgMCwgcGF0dGVybkNhbGxiYWNrLCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNr
IH07CiAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZShwbGF0Zm9ybUltYWdlLCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgeFN0ZXAsIHlTdGVwLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRT
cGFjaW5nLCBUUlVFLCAmcGF0dGVybkNhbGxiYWNrcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNHLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZmIyZGUwZWExMmRhMjE0ZjEwNDZjMzk2MmU4ZWFiNTNjNjQ0MTI1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGxhdGZvcm1JbWFnZUNH
LmNwcApAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUltYWdl
LmgiCisKKyNpZiBVU0UoQ0cpCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvcmVH
cmFwaGljc1NQSS5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdlb21ldHJ5
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNsdWRlICJJ
bnRTaXplLmgiCisjaW5jbHVkZSAiU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIgorCisjaWYgUExB
VEZPUk0oV0lOKQorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1J
bnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit2b2lkIFBs
YXRmb3JtSW1hZ2U6OmNsZWFyU3ViSW1hZ2VzKCkKK3sKKyNpZiBDQUNIRV9TVUJJTUFHRVMKKyAg
ICBpZiAoIWlzTmlsKCkpCisgICAgICAgIHN1YmltYWdlQ2FjaGUoKS5jbGVhckltYWdlKGNnSW1h
Z2VSZWYoKSk7CisjZW5kaWYKK30KKworSW50U2l6ZSBQbGF0Zm9ybUltYWdlOjpzaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaXNOaWwoKSA/IEludFNpemUoKSA6IEludFNpemUoQ0dJbWFnZUdl
dFdpZHRoKGNnSW1hZ2VSZWYoKSksIENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFnZVJlZigpKSk7Cit9
CisKK2Jvb2wgUGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEoKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBBbnN3ZXIgY29ycmVjdGx5IHRoZSBxdWVzdGlvbjogZG9lcyB0aGUgQ0dJbWFnZVJlZiBoYXZl
IGFscGhhIGNoYW5ubmVsPworICAgIHJldHVybiB0cnVlOworfQorCitDb2xvciBQbGF0Zm9ybUlt
YWdlOjpzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmIChpc05pbCgpIHx8
IHNpemUoKSAhPSBJbnRTaXplKDEsIDEpKQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAK
KyAgICB1bnNpZ25lZCBjaGFyIHBpeGVsWzRdOyAvLyBSR0JBCisgICAgYXV0byBiaXRtYXBDb250
ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWwsIDEsIDEsIDgsIHNpemVv
ZihwaXhlbCksIHNSR0JDb2xvclNwYWNlUmVmKCksCisgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkTGFzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMyQmlnKSk7CisgICAgCisgICAgaWYg
KCFiaXRtYXBDb250ZXh0KQorICAgICAgICByZXR1cm4gQ29sb3IoKTsKKyAgICAKKyAgICBDR0Nv
bnRleHRTZXRCbGVuZE1vZGUoYml0bWFwQ29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7
CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCksIENHUmVjdE1ha2Uo
MCwgMCwgMSwgMSksIGNnSW1hZ2VSZWYoKSk7CisgICAgCisgICAgaWYgKCFwaXhlbFszXSkKKyAg
ICAgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDApOworICAgIAorICAgIHJldHVybiBDb2xvcihw
aXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhl
bFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7Cit9CisgICAgCitib29sIFBsYXRmb3Jt
SW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpIGNvbnN0Cit7CisgICAgQ0dJbWFnZVJlZiBpbWFn
ZSA9IGNnSW1hZ2VSZWYoKTsKKyAgICBBU1NFUlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQo
aW1hZ2UpID09IDgpOworICAgIAorICAgIENHQml0bWFwSW5mbyBpbWFnZUluZm8gPSBDR0ltYWdl
R2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgaWYgKCEoaW1hZ2VJbmZvICYga0NHQml0bWFwQnl0
ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBrQ0dCaXRtYXBBbHBoYUluZm9NYXNrKSAh
PSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSB7CisgICAgICAgIC8vIEZJWE1FOiBD
b25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhlciBwaXhlbCBmb3JtYXRzLgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAKKyAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpOworICAgIHNpemVf
dCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKKyAgICBzaXplX3QgYnl0ZXNQZXJS
b3cgPSBDR0ltYWdlR2V0Qnl0ZXNQZXJSb3coaW1hZ2UpOworICAgIAorICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1h
Z2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7CisgICAgY29uc3QgVUludDgqIGRhdGEgPSBDRkRh
dGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKKyAgICAKKyAgICAvLyBPdmVybGF5IGEgZ3Jp
ZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9uIG9mIHRoZSBp
bWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBvaW50cywgY2FsY3VsYXRlIHRoZSBkaWZm
ZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2FtcGxlIHBvaW50CisgICAgLy8gYW5kIGl0
cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJhbnNwYXJlbmN5LgorICAgIGNvbnN0IHVu
c2lnbmVkIHNhbXBsZVJvd3MgPSA3OworICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZUNvbHMgPSA3
OworICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3BlciBudW1iZXIgb2Ygc2FtcGxlcywgYW5k
IGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0aW9zLgorICAgIGlmICh3aWR0aCA8IHNh
bXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBsYXN0IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUg
aW1hZ2UgcGVyaW1ldGVyLgorICAgIGNvbnN0IGZsb2F0IHN0cmlkZVdpZHRoID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29scyAtIDEpOworICAgIGNvbnN0IGZsb2F0
IHN0cmlkZUhlaWdodCA9IHN0YXRpY19jYXN0PGZsb2F0PihoZWlnaHQgLSAxKSAvIChzYW1wbGVS
b3dzIC0gMSk7CisgICAgZmxvYXQgc2FtcGxlc1tzYW1wbGVSb3dzXVtzYW1wbGVDb2xzXTsKKyAg
ICAKKyAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2YgdGhlIHNhbXBsZSBwb2ludHMuCisgICAg
ZmxvYXQgeSA9IDA7CisgICAgY29uc3QgVUludDgqIHJvdyA9IGRhdGE7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkgeworICAgICAgICBmbG9hdCB4ID0gMDsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNhbXBsZUNvbHM7ICsraikgeworICAg
ICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsgKHN0YXRpY19jYXN0PGludD4oeCArIC41
KSkgKiA0OworICAgICAgICAgICAgLy8gUiBHIEIgQQorICAgICAgICAgICAgc2FtcGxlc1tpXVtq
XSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAwKzEpICsgMC4wNzIxICogKihwMCsyKSkg
KiAqKHAwKzMpIC8gMjU1OworICAgICAgICAgICAgeCArPSBzdHJpZGVXaWR0aDsKKyAgICAgICAg
fQorICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKKyAgICAgICAgcm93ID0gZGF0YSArIChzdGF0
aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJSb3c7CisgICAgfQorICAgIAorICAgIC8v
IERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAgZmxvYXQgYWNjdW1TY29yZSA9IDA7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBsZVJvd3MgLSAxOyArK2kpIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBsZUNvbHMgLSAxOyArK2opIHsKKyAgICAg
ICAgICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAxXVtqXSArIHNhbXBsZXNbaSArIDFdW2pd
ICsgc2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ldW2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ld
W2pdOworICAgICAgICAgICAgYWNjdW1TY29yZSArPSBkaWZmICogZGlmZjsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICAvLyBUaGUgc2NvcmUgZm9yIGEgZ2l2ZW4gc2FtcGxlIGNhbiBiZSB3
aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5kIDI1NV4yLgorICAgIHJldHVybiBhY2N1bVNjb3JlIDwg
MjUwMCAqIChzYW1wbGVSb3dzIC0gMikgKiAoc2FtcGxlQ29scyAtIDIpOworfQorCitmbG9hdCBQ
bGF0Zm9ybUltYWdlOjpzdWJzYW1wbGluZ1NjYWxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQorewor
ICAgIC8vIE5ldmVyIHVzZSBzdWJzYW1wbGVkIGltYWdlcyBmb3IgZHJhd2luZyBpbnRvIFBERiBj
b250ZXh0cy4KKyAgICBpZiAod2tDR0NvbnRleHRJc1BERkNvbnRleHQoY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiAxOworICAgIAorICAgIENHUmVjdCB0cmFuc2Zv
cm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0
LCBDR0NvbnRleHRHZXRDVE0oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkpOworICAgIHJldHVy
biBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Qu
c2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Qu
c2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1JbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBjb25zdCBJbWFnZU9yaWVudGF0aW9u
JiBvcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZl
biB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCisgICAgSW50U2l6ZSBz
dWJzYW1wbGVkSW1hZ2VTaXplID0gc2l6ZSgpOworICAgIAorICAgIC8vIHNyY1JlY3QgaXMgaW4g
dGhlIGNvb3JkaW5hdGVzIG9mIHRoZSB1bnN1YnNhbXBsZWQgaW1hZ2UsIHNvIHdlIGhhdmUgdG8g
bWFwIGl0IHRvIHRoZSBzdWJzYW1wbGVkIGltYWdlLgorICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNy
Y1JlY3QgPSBzcmNSZWN0OworICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUp
CisgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsg
fSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKKyAgICAK
KyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXpl
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwgbW9kZSwgb3JpZW50YXRpb24pOworfQor
ICAgIAorfQorCisjZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2EubW0KaW5kZXggODk3MjBkMTczNjVkYTdlOGJhODQ2OWQ1Mjk0NTQ4ZDUxODQ3
YTdmZS4uNDQ3NmZjNWY4N2MzNDk4OGY2ZDlhZDU1ZWViZDhkMWI5YmIwMjJlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCkBAIC0xMjksNyArMTI5LDcgQEAg
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6flRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29j
b2EoKQogdm9pZCBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjp1cGRhdGUoKQogewogICAg
IGlmIChhdXRvIHJlcHJlc2VudGF0aW9uID0gbV9jbGllbnQuY3JlYXRlVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25JbWFnZSgpKQotICAgICAgICBbbV9sYXllci5nZXQoKSBzZXRDb250ZW50czooaWQp
cmVwcmVzZW50YXRpb24tPmdldENHSW1hZ2VSZWYoKV07CisgICAgICAgIFttX2xheWVyLmdldCgp
IHNldENvbnRlbnRzOihpZClyZXByZXNlbnRhdGlvbi0+bmF0aXZlSW1hZ2UoKS5nZXQoKV07CiB9
CiAKIHZvaWQgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6c2V0Q29udGVudFNjYWxlKGZs
b2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0lt
YWdlTWFjLm1tCmluZGV4IDAxZWI2ZGQzMDA0M2EyMjUyOTE3NmZkOTEyMTE3ZGM1Nzc2YzE3YmEu
LmRjMWM3YzcwOTVkOTQ0YzRjNjJmMWZlMDkzNTcwMmExM2M3YzdhNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KQEAgLTg1LDMxICs4
NSwyMiBAQCBDRkRhdGFSZWYgQml0bWFwSW1hZ2U6OmdldFRJRkZSZXByZXNlbnRhdGlvbigpCiAg
ICAgaWYgKG1fdGlmZlJlcCkKICAgICAgICAgcmV0dXJuIG1fdGlmZlJlcC5nZXQoKTsKIAotICAg
IHVuc2lnbmVkIG51bUZyYW1lcyA9IGZyYW1lQ291bnQoKTsKKyAgICBhdXRvIG5hdGl2ZUltYWdl
cyA9IHRoaXMtPmZyYW1lc05hdGl2ZUltYWdlcygpOwogCi0gICAgLy8gSWYgbnVtRnJhbWVzIGlz
IHplcm8sIHdlIGtub3cgZm9yIGNlcnRhaW4gdGhpcyBpbWFnZSBkb2Vzbid0IGhhdmUgdmFsaWQg
ZGF0YQorICAgIC8vIElmIGZyYW1lc0ltYWdlcy5zaXplKCkgaXMgemVybywgd2Uga25vdyBmb3Ig
Y2VydGFpbiB0aGlzIGltYWdlIGRvZXNuJ3QgaGF2ZSB2YWxpZCBkYXRhCiAgICAgLy8gRXZlbiB0
aG91Z2ggdGhlIGNhbGwgdG8gQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEgd2lsbCBm
YWlsIGFuZCB3ZSdsbCBoYW5kbGUgaXQgZ3JhY2VmdWxseSwKICAgICAvLyBpbiBjZXJ0YWluIGNp
cmN1bXN0YW5jZXMgdGhhdCBjYWxsIHdpbGwgc3BhbSB0aGUgY29uc29sZSB3aXRoIGFuIGVycm9y
IG1lc3NhZ2UKLSAgICBpZiAoIW51bUZyYW1lcykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBW
ZWN0b3I8Q0dJbWFnZVJlZj4gaW1hZ2VzOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1GcmFtZXM7ICsraSApIHsKLSAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gZnJhbWVJbWFn
ZUF0SW5kZXgoaSkuZ2V0KCk7Ci0gICAgICAgIGlmIChjZ0ltYWdlKQotICAgICAgICAgICAgaW1h
Z2VzLmFwcGVuZChjZ0ltYWdlKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBudW1WYWxpZEZyYW1l
cyA9IGltYWdlcy5zaXplKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZXMuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBkYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKLSAgICBSZXRhaW5QdHI8Q0dJ
bWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwga1VUVHlwZVRJRkYsIG51bVZhbGlkRnJhbWVz
LCAwKSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gZGVzdGluYXRpb24g
PSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIGtV
VFR5cGVUSUZGLCBuYXRpdmVJbWFnZXMuc2l6ZSgpLCAwKSk7CiAKICAgICBpZiAoIWRlc3RpbmF0
aW9uKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFsaWRGcmFtZXM7ICsraSkKLSAgICAgICAgQ0dJ
bWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIGltYWdlc1tpXSwgMCk7
CisgICAgZm9yIChhdXRvIG5hdGl2ZUltYWdlIDogbmF0aXZlSW1hZ2VzKQorICAgICAgICBDR0lt
YWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgbmF0aXZlSW1hZ2UuZ2V0
KCksIDApOwogCiAgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggMjE2
Y2QwOTNmMjY0NjdjYmE4OGE0M2Y2OTNhYmY0Y2Y1MWRkMWE0ZC4uZDExNDU0YjA1ZWY4ODk5M2E2
Mjg5Mzg5NmJjMGMxMTcyOGM1ZWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZU1hYy5tbQpAQCAtODcsNyArODcsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
TWFjOjp1cGRhdGVQbGF0Zm9ybUxheWVyKCkgY29uc3QKICAgICAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIG1fcHJldmlld0ltYWdlID0gaW1hZ2UtPmdldENH
SW1hZ2VSZWYoKTsKKyAgICAgICAgbV9wcmV2aWV3SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2Uo
KTsKICAgICAgICAgaWYgKCFtX3ByZXZpZXdJbWFnZSkKICAgICAgICAgICAgIGJyZWFrOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCAz
NmNkNjUxNmU4MGYxNzQ4YmZlYWI3N2E5MzAyNzFjMTIxZGU4MDE5Li40YjRlMzc3OWU5NmY3OGM2
NTQwYTUzYzQ0NzhjM2JmZDkzNWY1M2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTEzNiw5ICsxMzYsOSBAQCBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWcsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbikKICAgICBDR0NvbnRleHRTY2FsZUNUTShkcmF3Q29udGV4dCwgMSwgLTEpOwogICAg
IENHQ29udGV4dFNldEZpbGxDb2xvcihkcmF3Q29udGV4dCwgd2hpdGUpOwogICAgIENHQ29udGV4
dEZpbGxSZWN0KGRyYXdDb250ZXh0LCByZWN0KTsKLSAgICBpZiAoYXV0byBzcmNJbWFnZSA9IGlt
Zy0+Z2V0Q0dJbWFnZVJlZigpKSB7CisgICAgaWYgKGF1dG8gc3JjSW1hZ2UgPSBpbWctPm5hdGl2
ZUltYWdlKCkpIHsKICAgICAgICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKGRyYXdDb250ZXh0LCBr
Q0dCbGVuZE1vZGVOb3JtYWwpOwotICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoZHJhd0NvbnRl
eHQsIHJlY3QsIHNyY0ltYWdlKTsKKyAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGRyYXdDb250
ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQoKSk7CiAgICAgfQogICAgIENHQ29udGV4dFJlbGVhc2Uo
ZHJhd0NvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNh
Y2hlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCBiNjU5ZDZk
YmY5YWQ2OTk5YzNhYzk2MmRlOTUxNTc4MDk3ZTFmM2IxLi43YzVlZDIxMGRkYjJhMzJhNzY2Njc0
YzEyMGQ5OTRjMmZhNDdlN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YkNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KQEAgLTIw
NCw3ICsyMDQsNyBAQCArIChDR0ltYWdlUmVmKWltYWdlRm9yVVJMOihOU1VSTCAqKXVybAogICAg
IFdlYkNvcmU6OkNhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFdlYkNvcmU6OkNh
Y2hlZEltYWdlPigqY2FjaGVkUmVzb3VyY2UpOwogICAgIGlmICghY2FjaGVkSW1hZ2UuaGFzSW1h
Z2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdlLmlt
YWdlKCktPmdldENHSW1hZ2VSZWYoKTsKKyAgICByZXR1cm4gY2FjaGVkSW1hZ2UuaW1hZ2UoKS0+
bmF0aXZlSW1hZ2UoKS5nZXQoKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNH
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9jZy9XS0ljb25EYXRhYmFzZUNH
LmNwcAppbmRleCAwZjZkZTdhMTQ2YTYxMWE1MmFhMWU1MzkwMTlmYTZjMWM0NjcyNWFlLi4zMDU2
MzM2Y2I2NmZlNGFmMThiZGM1MjlhY2EyZjhmYzg4MWRmZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvY2cvV0tJY29uRGF0YWJhc2VDRy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2NnL1dLSWNvbkRhdGFiYXNlQ0cuY3BwCkBAIC0z
NywxMiArMzcsMjMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBDR0ltYWdlUmVmIFdLSWNv
bkRhdGFiYXNlVHJ5R2V0Q0dJbWFnZUZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJh
c2VSZWYsIFdLVVJMUmVmIHVybFJlZiwgV0tTaXplIHNpemUpCiB7CiAgICAgSW1hZ2UqIGltYWdl
ID0gdG9JbXBsKGljb25EYXRhYmFzZVJlZiktPmltYWdlRm9yUGFnZVVSTCh0b1dURlN0cmluZyh1
cmxSZWYpKTsKLSAgICByZXR1cm4gaW1hZ2UgPyBpbWFnZS0+Z2V0Rmlyc3RDR0ltYWdlUmVmT2ZT
aXplKEludFNpemUoc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKSwgc3RhdGljX2Nhc3Q8aW50
PihzaXplLmhlaWdodCkpKSA6IDA7CisgICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPm5hdGl2ZUlt
YWdlT2ZTaXplKEludFNpemUoc3RhdGljX2Nhc3Q8aW50PihzaXplLndpZHRoKSwgc3RhdGljX2Nh
c3Q8aW50PihzaXplLmhlaWdodCkpKS5nZXQoKSA6IG51bGxwdHI7CiB9CiAKIENGQXJyYXlSZWYg
V0tJY29uRGF0YWJhc2VUcnlDb3B5Q0dJbWFnZUFycmF5Rm9yVVJMKFdLSWNvbkRhdGFiYXNlUmVm
IGljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewogICAgIEltYWdlKiBpbWFnZSA9
IHRvSW1wbChpY29uRGF0YWJhc2VSZWYpLT5pbWFnZUZvclBhZ2VVUkwodG9XVEZTdHJpbmcodXJs
UmVmKSk7Ci0gICAgcmV0dXJuIGltYWdlID8gaW1hZ2UtPmdldENHSW1hZ2VBcnJheSgpLmxlYWtS
ZWYoKSA6IDA7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBhdXRvIG5hdGl2ZUltYWdlcyA9IGltYWdlLT5mcmFtZXNOYXRpdmVJbWFnZXMoKTsKKyAgICBp
ZiAoIW5hdGl2ZUltYWdlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAor
ICAgIENGTXV0YWJsZUFycmF5UmVmIGFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUobnVsbHB0
ciwgbmF0aXZlSW1hZ2VzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CisgICAgZm9y
IChhdXRvIG5hdGl2ZUltYWdlIDogbmF0aXZlSW1hZ2VzKQorICAgICAgICBDRkFycmF5QXBwZW5k
VmFsdWUoYXJyYXksIG5hdGl2ZUltYWdlLmdldCgpKTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZSZXRhaW4oYXJyYXkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCA2MjYwZGU0NjExYThlYWRhNWNjMTUyOWMxMzNjNzUxYzY4MDYzZmM1Li5jNWUzNTcyYTQ3
NjQ3ZGMyYjZiMDAyMzJlNWQ5NTc2MWViYjA2ZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDA3
OCw3ICs0MDc4LDcgQEAgLSAoVUlJbWFnZSAqKV9wcmVzZW50YXRpb25TbmFwc2hvdEZvclByZXZp
ZXdJdGVtQ29udHJvbGxlcjooVUlQcmV2aWV3SXRlbUNvbnRyb2wKIHsKICAgICBpZiAoIV9wb3Np
dGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdl
Ol9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudEltYWdlLT5nZXRDR0lt
YWdlUmVmKCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gW1tbVUlJbWFnZSBhbGxvY10gaW5p
dFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmtJbmRpY2F0b3IuY29udGVudElt
YWdlLT5uYXRpdmVJbWFnZSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkg
KilfcHJlc2VudGF0aW9uUmVjdHNGb3JQcmV2aWV3SXRlbUNvbnRyb2xsZXI6KFVJUHJldmlld0l0
ZW1Db250cm9sbGVyICopY29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDlhMzNmN2NjN2RjN2M3ZDcyZjlkYTc0MzA5
OGI3ZGJjYTgyNDA5Y2YuLmE1MzI1MTA2NzhiOWY1MzUxNDU4YTM4YTlmNDIzMzc0N2QwMzVmNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTE3MjcsNjkgKzE3MjcsNiBAQCB2b2lkIFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2lu
VmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZAogfQogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXN0YXRpYyBib29sIGlzQWxtb3N0U29saWRDb2xv
cihCaXRtYXBJbWFnZSogYml0bWFwKQotewotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBiaXRtYXAt
PmdldENHSW1hZ2VSZWYoKTsKLSAgICBBU1NFUlQoQ0dJbWFnZUdldEJpdHNQZXJDb21wb25lbnQo
aW1hZ2UpID09IDgpOwotCi0gICAgQ0dCaXRtYXBJbmZvIGltYWdlSW5mbyA9IENHSW1hZ2VHZXRC
aXRtYXBJbmZvKGltYWdlKTsKLSAgICBpZiAoIShpbWFnZUluZm8gJiBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkxpdHRsZSkgfHwgKGltYWdlSW5mbyAmIGtDR0JpdG1hcEFscGhhSW5mb01hc2spICE9IGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpIHsKLSAgICAgICAgLy8gRklYTUU6IENvbnNp
ZGVyIGJlaW5nIGFibGUgdG8gaGFuZGxlIG90aGVyIHBpeGVsIGZvcm1hdHMuCi0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
c2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKTsKLSAgICBzaXplX3QgaGVpZ2h0
ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZSk7Ci0gICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJ
bWFnZUdldEJ5dGVzUGVyUm93KGltYWdlKTsKLQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJv
dmlkZXIoaW1hZ2UpKSk7Ci0gICAgY29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRy
KHByb3ZpZGVyLmdldCgpKTsKLQotICAgIC8vIE92ZXJsYXkgYSBncmlkIG9mIHNhbXBsaW5nIGRv
dHMgb24gdG9wIG9mIGEgZ3JheXNjYWxlIHZlcnNpb24gb2YgdGhlIGltYWdlLgotICAgIC8vIEZv
ciB0aGUgaW50ZXJpb3IgcG9pbnRzLCBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbHVtaW5h
bmNlIGFtb25nIHRoZSBzYW1wbGUgcG9pbnQKLSAgICAvLyBhbmQgaXRzIHN1cnJvdW5kcyBwb2lu
dHMsIHNjYWxlZCBieSB0cmFuc3BhcmVuY3kuCi0gICAgY29uc3QgdW5zaWduZWQgc2FtcGxlUm93
cyA9IDc7Ci0gICAgY29uc3QgdW5zaWduZWQgc2FtcGxlQ29scyA9IDc7Ci0gICAgLy8gRklYTUU6
IFJlZmluZSB0aGUgcHJvcGVyIG51bWJlciBvZiBzYW1wbGVzLCBhbmQgYWNjb21tb2RhdGUgZGlm
ZmVyZW50IGFzcGVjdCByYXRpb3MuCi0gICAgaWYgKHdpZHRoIDwgc2FtcGxlQ29scyB8fCBoZWln
aHQgPCBzYW1wbGVSb3dzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBFbnN1cmUg
dGhhdCB0aGUgbGFzdCByb3cvY29sdW1uIGxhbmQgb24gdGhlIGltYWdlIHBlcmltZXRlci4KLSAg
ICBjb25zdCBmbG9hdCBzdHJpZGVXaWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pih3aWR0aCAtIDEp
IC8gKHNhbXBsZUNvbHMgLSAxKTsKLSAgICBjb25zdCBmbG9hdCBzdHJpZGVIZWlnaHQgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oaGVpZ2h0IC0gMSkgLyAoc2FtcGxlUm93cyAtIDEpOwotICAgIGZsb2F0
IHNhbXBsZXNbc2FtcGxlUm93c11bc2FtcGxlQ29sc107Ci0KLSAgICAvLyBGaW5kIHRoZSBsdW1p
bmFuY2Ugb2YgdGhlIHNhbXBsZSBwb2ludHMuCi0gICAgZmxvYXQgeSA9IDA7Ci0gICAgY29uc3Qg
VUludDgqIHJvdyA9IGRhdGE7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJv
d3M7ICsraSkgewotICAgICAgICBmbG9hdCB4ID0gMDsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IHNhbXBsZUNvbHM7ICsraikgewotICAgICAgICAgICAgY29uc3QgVUludDgqIHAw
ID0gcm93ICsgKHN0YXRpY19jYXN0PGludD4oeCArIC41KSkgKiA0OwotICAgICAgICAgICAgLy8g
UiBHIEIgQQotICAgICAgICAgICAgc2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcx
NTQgKiAqKHAwKzEpICsgMC4wNzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OwotICAgICAg
ICAgICAgeCArPSBzdHJpZGVXaWR0aDsKLSAgICAgICAgfQotICAgICAgICB5ICs9IHN0cmlkZUhl
aWdodDsKLSAgICAgICAgcm93ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICog
Ynl0ZXNQZXJSb3c7Ci0gICAgfQotCi0gICAgLy8gRGV0ZXJtaW5lIHRoZSBpbWFnZSBzY29yZS4K
LSAgICBmbG9hdCBhY2N1bVNjb3JlID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
c2FtcGxlUm93cyAtIDE7ICsraSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAxOyBqIDwg
c2FtcGxlQ29scyAtIDE7ICsraikgewotICAgICAgICAgICAgZmxvYXQgZGlmZiA9IHNhbXBsZXNb
aSAtIDFdW2pdICsgc2FtcGxlc1tpICsgMV1bal0gKyBzYW1wbGVzW2ldW2ogLSAxXSArIHNhbXBs
ZXNbaV1baiArIDFdIC0gNCAqIHNhbXBsZXNbaV1bal07Ci0gICAgICAgICAgICBhY2N1bVNjb3Jl
ICs9IGRpZmYgKiBkaWZmOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhlIHNjb3JlIGZv
ciBhIGdpdmVuIHNhbXBsZSBjYW4gYmUgd2l0aGluIHRoZSByYW5nZSBvZiAwIGFuZCAyNTVeMi4K
LSAgICByZXR1cm4gYWNjdW1TY29yZSA8IDI1MDAgKiAoc2FtcGxlUm93cyAtIDIpICogKHNhbXBs
ZUNvbHMgLSAyKTsKLX0KLSNlbmRpZgotCiB2b2lkIFBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90
VGltZXJGaXJlZCgpCiB7CiAjaWYgRU5BQkxFKFBSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hF
VVJJU1RJQykKQEAgLTE4MDksNyArMTc0Niw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25h
cHNob3RUaW1lckZpcmVkKCkKIAogICAgICAgICBpZiAoc25hcHNob3RJbWFnZSkgewogI2lmIEVO
QUJMRShQUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCi0gICAgICAgICAgICBi
b29sIHNuYXBzaG90SXNBbG1vc3RTb2xpZENvbG9yID0gaXNBbG1vc3RTb2xpZENvbG9yKGRvd25j
YXN0PEJpdG1hcEltYWdlPihzbmFwc2hvdEltYWdlLmdldCgpKSk7CisgICAgICAgICAgICBib29s
IHNuYXBzaG90SXNBbG1vc3RTb2xpZENvbG9yID0gc3RhdGljX3BvaW50ZXJfY2FzdDxCaXRtYXBJ
bWFnZT4oc25hcHNob3RJbWFnZSktPmlzQWxtb3N0U29saWRDb2xvcigpOwogICAgICAgICAgICAg
c25hcHNob3RGb3VuZCA9ICFzbmFwc2hvdElzQWxtb3N0U29saWRDb2xvcjsKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282741</attachid>
            <date>2016-07-04 20:20:45 -0700</date>
            <delta_ts>2017-08-21 12:16:16 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>image-decode-7-4-2016.patch</filename>
            <type>text/plain</type>
            <size>32693</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzQ2ODk1OS4uNTJkODY2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMzAsNiArMjIzMCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9JU09WVFRDdWUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VP
cmllbnRhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZGZkMWNjLi42
YjE0OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjIgQEAKIDIwMTYtMDYtMjQgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KIAorICAgICAgICBSZW5hbWUgRnJh
bWVEYXRhIHRvIEltYWdlRnJhbWVEYXRhIGFuZCBtb3ZlIGl0IHRvIGEgc2VwYXJhdGUgZmlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NDQ0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBJbWFn
ZUZyYW1lRGF0YSB0byBhIHNlcGFyYXRlIGZpbGUgc28gaXQgY2FuIGJlIGNhY2hlZCBieSBJbWFn
ZVNvdXJjZQorICAgICAgICBhbmQgd2lsbCBzdGlsbCBiZSBjb25zdW1lZCBieSBCaXRtYXBJbWFn
ZS4gTWFrZSB0aGUgZGF0YSBtZW1iZXJzIG9mIEltYWdlRnJhbWVEYXRhCisgICAgICAgIGJlIHBy
aXZhdGUgYW5kIGFkZCBnZXR0ZXJzIHRvIHJldHVybiB0aGVpciB2YWx1ZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIC0tIENvZGUgcmVmYWN0b3JpbmcsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmhhdmVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZnJhbWVI
YXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzaW5nbGVQ
aXhlbFNvbGlkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzQWxtb3N0
U29saWRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6fkZyYW1lRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZURhdGE6OnVzZWRGcmFtZUJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVNvdXJjZTo6Y3JlYXRlRnJhbWVEYXRhQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pbWFnZUZy
YW1lRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Oklt
YWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjp+SW1hZ2VG
cmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1h
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjppc0FsbW9zdFNvbGlkQ29sb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ltYWdlRnJhbWVEYXRhLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6OnN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUZyYW1lRGF0YTo6aXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0
YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6ZnJhbWVCeXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZURhdGE6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRnJhbWVEYXRhOjpzdWJzYW1wbGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWVEYXRhOjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6
aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURhdGE6Omhhc0ltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRhOjpoYXNNZXRhZGF0YSk6CisKKzIwMTYt
MDYtMjQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKwogICAg
ICAgICBJbnRyb2R1Y2UgUGxhdGZvcm1JbWFnZSBhbmQgbWFrZSBpdCBpcyBhIHdyYXBwZXIgZm9y
IE5hdGl2ZUltYWdlUHRyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg2ODQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGJhOGUxYWEuLjhlOTU3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzMjksNiArMjMy
OSw4IEBACiAJCTU1NUI4N0VDMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTVCODdFQTFD
QUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwICovOyB9OwogCQk1NTVCODdFRDFD
QUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFn
ZURlY29kZXJDRy5oICovOyB9OwogCQk1NTc0RjA4NzFEMDI3OTA5MDBCOUYxNEMgLyogUGxhdGZv
cm1JbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTU3NEYwODUxRDAyNzQ0NDAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NUNCQTZBMTFEMURGMkUxMDA0
NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTVDQkE2OUYxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVE
YXRhLmNwcCAqLzsgfTsKKwkJNTVDQkE2QTIxRDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUNC
QTZBMDFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzJBN0YyMTFDNkU1NzE5MDA5QzYx
NDkgLyogU2ltdWxhdGVkQ2xpY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3MkE3RjIwMUM2RTU3MTkwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5o
ICovOyB9OwogCQk1NzJBN0YyMzFDNkU1QTY2MDA5QzYxNDkgLyogU2ltdWxhdGVkQ2xpY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyQTdGMjIx
QzZFNUE2NjAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmNwcCAqLzsgfTsKIAkJNTgwMzcxNjEx
QTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4MDM3MTVGMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVj
dC5jcHAgKi87IH07CkBAIC05OTk0LDYgKzk5OTYsOCBAQAogCQk1NTVCODdFQTFDQUFGMEFCMDAz
NDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTVCODdFQjFDQUFGMEFCMDAzNDk0MjUgLyogSW1hZ2VEZWNvZGVyQ0cuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VEZWNvZGVyQ0cuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTU3NEYwODUxRDAyNzQ0NDAwQjlGMTRDIC8qIFBsYXRmb3JtSW1hZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1JbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1NUNCQTY5RjFEMURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VGcmFtZURhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NUNCQTZBMDFEMURGMkUxMDA0NTE4NjAgLyog
SW1hZ2VGcmFtZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VG
cmFtZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVENDA4RjcxQTdDNjMx
ODAwQzc4NDUwIC8qIFNWR0ltYWdlQ2xpZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdJbWFnZUNsaWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTcyQTdGMjAxQzZFNTcxOTAwOUM2MTQ5IC8qIFNpbXVsYXRlZENsaWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVsYXRlZENsaWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3MkE3RjIyMUM2RTVBNjYwMDlDNjE0OSAvKiBTaW11bGF0ZWRDbGljay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW11bGF0ZWRDbGljay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjIxMSw2ICsyMjIxNSw4IEBACiAJ
CQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAqLywKIAkJCQlC
MkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQkyMkJEOUY3
RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJCQkJNTVDQkE2OUYx
RDFERjJFMTAwNDUxODYwIC8qIEltYWdlRnJhbWVEYXRhLmNwcCAqLywKKwkJCQk1NUNCQTZBMDFE
MURGMkUxMDA0NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUz
MjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovLAogCQkJCUE4NzQ4RDc0MTJDQzNGODkw
MDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCAqLywKIAkJCQlBODc0OEQ2NjEyQ0MzNzYz
MDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovLApAQCAtMjY0NjIsNiArMjY0NjgsNyBA
QAogCQkJCUQzNTlENzhBMTI5Q0EyNzEwMDA2RTVEMiAvKiBIVE1MRGV0YWlsc0VsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4RUE3OUZBMEExOTE2REYwMEE4RUY1RiAvKiBIVE1MRGlyZWN0
b3J5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdDQjcwQTE5MkI5QzAwQThFRjVG
IC8qIEhUTUxEaXZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NUNCQTZBMjFEMURGMkUx
MDA0NTE4NjAgLyogSW1hZ2VGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3OUY3
MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MRExpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0YxOThFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTERvY3VtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NzdCMzg2NzEyMjg4M0U5MDBCODFGRjggLyogSFRNTERvY3VtZW50UGFyc2VyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI5Nzc5LDYgKzI5Nzg2LDcgQEAKIAkJCQkyRTJEOTlFODEwRTJC
QzFDMDA0OTYzMzcgLyogRE9NQmxvYi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDg5Q0Q4MEE5
OEM0MjgwMEEyNzVBQSAvKiBET01DREFUQVNlY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk4
NUFDQTk4NzBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTU1Q0JBNkExMUQxREYyRTEwMDQ1MTg2MCAvKiBJbWFnZUZyYW1lRGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NTA4OUNEQTBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVu
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk3OEQwN0JFMTQ1QTBGNkMwMDk2OTA4RCAvKiBET01D
b3JlRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1OEMzOEE2MEFBOEYyMDQwMEIx
ODdBNCAvKiBET01Db3VudGVyLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMzU2NzQwMS4uZTg2MjY0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApAQCAtNjgsMTUgKzY4LDEzIEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICAsIG1faGF2ZUZy
YW1lQ291bnQodHJ1ZSkKICAgICAsIG1fYW5pbWF0aW9uRmluaXNoZWRXaGVuQ2F0Y2hpbmdVcChm
YWxzZSkKIHsKKyAgICBtX2ZyYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOworICAgIG1f
ZnJhbWVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGltYWdlKSk7CisgICAgCiAgICAgLy8gU2lu
Y2Ugd2UgZG9uJ3QgaGF2ZSBhIGRlY29kZXIsIHdlIGNhbid0IGZpZ3VyZSBvdXQgdGhlIGltYWdl
IG9yaWVudGF0aW9uLgogICAgIC8vIFNldCBtX3NpemVSZXNwZWN0aW5nT3JpZW50YXRpb24gdG8g
YmUgdGhlIHNhbWUgYXMgbV9zaXplIHNvIGl0J3Mgbm90IDB4MC4KLSAgICBtX3NpemVSZXNwZWN0
aW5nT3JpZW50YXRpb24gPSBtX3NpemUgPSBQbGF0Zm9ybUltYWdlKGltYWdlKS5zaXplKCk7Cisg
ICAgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uID0gbV9zaXplID0gbV9mcmFtZXNbMF0uc2l6
ZSgpOwogICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUuYXJlYSgpICogNDsKLQotICAgIG1fZnJh
bWVzLmdyb3coMSk7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IFBsYXRmb3JtSW1hZ2Uo
aW1hZ2UpLmhhc0FscGhhKCk7Ci0gICAgbV9mcmFtZXNbMF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVl
OwotICAgIG1fZnJhbWVzWzBdLm1faW1hZ2UgPSBXVEZNb3ZlKGltYWdlKTsKIH0KIAogQml0bWFw
SW1hZ2U6On5CaXRtYXBJbWFnZSgpCkBAIC0xMDUsNyArMTAzLDcgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6aGF2ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICBpZiAoaW5kZXggPj0g
bV9mcmFtZXMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9m
cmFtZXNbaW5kZXhdLm1faW1hZ2U7CisgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5oYXNJbWFn
ZSgpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNv
bnN0CkBAIC0xMjUsNyArMTIzLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveURlY29kZWRE
YXRhKGJvb2wgZGVzdHJveUFsbCkKICAgICAgICAgLy8gVGhlIHVuZGVybHlpbmcgZnJhbWUgaXNu
J3QgYWN0dWFsbHkgY2hhbmdpbmcgKHdlJ3JlIGp1c3QgdHJ5aW5nIHRvCiAgICAgICAgIC8vIHNh
dmUgdGhlIG1lbW9yeSBmb3IgdGhlIGZyYW1lYnVmZmVyIGRhdGEpLCBzbyB3ZSBkb24ndCBuZWVk
IHRvIGNsZWFyCiAgICAgICAgIC8vIHRoZSBtZXRhZGF0YS4KLSAgICAgICAgZnJhbWVCeXRlc0Ns
ZWFyZWQgKz0gbV9mcmFtZXNbaV0uY2xlYXIoZmFsc2UpOworICAgICAgICBmcmFtZUJ5dGVzQ2xl
YXJlZCArPSBtX2ZyYW1lc1tpXS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRh
dGEpOwogICAgIH0KIAogICAgIG1fc291cmNlLmNsZWFyKGRlc3Ryb3lBbGwsIGNsZWFyQmVmb3Jl
RnJhbWUsIGRhdGEoKSwgbV9hbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTQ5LDcgKzE0Nyw3IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJv
eUFsbCkKIAogICAgIHVuc2lnbmVkIGFsbEZyYW1lQnl0ZXMgPSAwOwogICAgIGZvciAoYXV0byYg
ZnJhbWUgOiBtX2ZyYW1lcykKLSAgICAgICAgYWxsRnJhbWVCeXRlcyArPSBmcmFtZS51c2VkRnJh
bWVCeXRlcygpOworICAgICAgICBhbGxGcmFtZUJ5dGVzICs9IGZyYW1lLmZyYW1lQnl0ZXMoKTsK
IAogICAgIGlmIChhbGxGcmFtZUJ5dGVzID4gbGFyZ2VBbmltYXRpb25DdXRvZmYpIHsKICAgICAg
ICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlICVwIGRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNz
YXJ5IGRlc3Ryb3lpbmdEYXRhOiBhbGxGcmFtZUJ5dGVzPSV1IGN1dG9mZj0ldSIsIHRoaXMsIGFs
bEZyYW1lQnl0ZXMsIGxhcmdlQW5pbWF0aW9uQ3V0b2ZmKTsKQEAgLTE3NSw3ICsxNzMsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkZXN0cm95TWV0YWRhdGFBbmROb3RpZnkodW5zaWduZWQgZnJhbWVC
eXRlc0NsZWFyZWQsIENsZWFyZWRTbwogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRT
aXplQ2hhbmdlZCh0aGlzLCAtc2FmZUNhc3Q8aW50PihmcmFtZUJ5dGVzQ2xlYXJlZCkpOwogfQog
Ci12b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lQ2FjaGluZyBmcmFtZUNhY2hpbmcpCit2
b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZyBjYWNoaW5nKQogewog
ICAgIHNpemVfdCBudW1GcmFtZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgQVNTRVJUKG1fZGVjb2Rl
ZFNpemUgPT0gMCB8fCBudW1GcmFtZXMgPiAxKTsKQEAgLTE4MywyNSArMTgxLDEyIEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1
YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgaWYgKG1fZnJhbWVzLnNpemUoKSA8IG51bUZyYW1lcykK
ICAgICAgICAgbV9mcmFtZXMuZ3JvdyhudW1GcmFtZXMpOwogCi0gICAgaWYgKGZyYW1lQ2FjaGlu
ZyA9PSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpIHsKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1f
aW1hZ2UgPSBtX3NvdXJjZS5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCwgc3Vic2FtcGxp
bmdMZXZlbCk7Ci0gICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX3N1YnNhbXBsaW5nTGV2ZWwgPSBz
dWJzYW1wbGluZ0xldmVsOwotICAgIH0KLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0
aW9uID0gbV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tp
bmRleF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2lzQ29t
cGxldGUgPSBtX3NvdXJjZS5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKLQotICAgIGlm
IChyZXBldGl0aW9uQ291bnQoZmFsc2UpICE9IGNBbmltYXRpb25Ob25lKQotICAgICAgICBtX2Zy
YW1lc1tpbmRleF0ubV9kdXJhdGlvbiA9IG1fc291cmNlLmZyYW1lRHVyYXRpb25BdEluZGV4KGlu
ZGV4KTsKKyAgICBtX2ZyYW1lc1tpbmRleF0gPSBtX3NvdXJjZS5jcmVhdGVGcmFtZURhdGFBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsLCBjYWNoaW5nKTsKIAotICAgIG1fZnJhbWVzW2lu
ZGV4XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwot
ICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMgPSBtX3NvdXJjZS5mcmFtZUJ5dGVzQXRJ
bmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgTE9HKEltYWdlcywgIkJpdG1hcElt
YWdlICVwIGNhY2hlRnJhbWUgJWx1ICglcyV1IGJ5dGVzLCBjb21wbGV0ZSAlZCkiLCB0aGlzLCBp
bmRleCwgY2FjaGluZyA9PSBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEgPyAibWV0
YWRhdGEgb25seSwgIiA6ICIiLCBtX2ZyYW1lc1tpbmRleF0uZnJhbWVCeXRlcygpLCBtX2ZyYW1l
c1tpbmRleF0uaXNDb21wbGV0ZSgpKTsKIAotICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZSAl
cCBjYWNoZUZyYW1lICVsdSAoJXMldSBieXRlcywgY29tcGxldGUgJWQpIiwgdGhpcywgaW5kZXgs
IGZyYW1lQ2FjaGluZyA9PSBDYWNoZU1ldGFkYXRhT25seSA/ICJtZXRhZGF0YSBvbmx5LCAiIDog
IiIsIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lQnl0ZXMsIG1fZnJhbWVzW2luZGV4XS5tX2lzQ29t
cGxldGUpOwotCi0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlKSB7Ci0gICAgICAgIGlu
dCBkZWx0YUJ5dGVzID0gc2FmZUNhc3Q8aW50PihtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVz
KTsKKyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc0ltYWdlKCkpIHsKKyAgICAgICAgaW50IGRl
bHRhQnl0ZXMgPSBzYWZlQ2FzdDxpbnQ+KG1fZnJhbWVzW2luZGV4XS5mcmFtZUJ5dGVzKCkpOwog
ICAgICAgICBtX2RlY29kZWRTaXplICs9IGRlbHRhQnl0ZXM7CiAgICAgICAgIC8vIFRoZSBmdWxs
eS1kZWNvZGVkIGZyYW1lIHdpbGwgc3Vic3VtZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1
c2VkCiAgICAgICAgIC8vIHRvIGRldGVybWluZSBpbWFnZSBwcm9wZXJ0aWVzLgpAQCAtMjkwLDE1
ICsyNzUsMTUgQEAgYm9vbCBCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgICAgIC8vIE5PVEU6IERvbid0IGNhbGwgZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eCgpIGhlcmUsIHRoYXQgd2lsbCB0cnkgdG8KICAgICAgICAgLy8gZGVjb2RlIGFueSB1bmNhY2hl
ZCAoaS5lLiBuZXZlci1kZWNvZGVkIG9yCiAgICAgICAgIC8vIGNsZWFyZWQtb24tYS1wcmV2aW91
cy1wYXNzKSBmcmFtZXMhCi0gICAgICAgIGlmIChmcmFtZS5tX2hhdmVNZXRhZGF0YSAmJiAhZnJh
bWUubV9pc0NvbXBsZXRlKQotICAgICAgICAgICAgZnJhbWVCeXRlc0NsZWFyZWQgKz0gZnJhbWUu
Y2xlYXIodHJ1ZSk7CisgICAgICAgIGlmIChmcmFtZS5oYXNNZXRhZGF0YSgpICYmICFmcmFtZS5p
c0NvbXBsZXRlKCkpCisgICAgICAgICAgICBmcmFtZUJ5dGVzQ2xlYXJlZCArPSBmcmFtZS5jbGVh
cihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAgIH0KICAgICBkZXN0cm95TWV0
YWRhdGFBbmROb3RpZnkoZnJhbWVCeXRlc0NsZWFyZWQsIENsZWFyZWRTb3VyY2U6Ok5vKTsKICNl
bHNlCiAgICAgLy8gRklYTUU6IHdoeSBpcyB0aGlzIGRpZmZlcmVudCBmb3IgaU9TPwogICAgIGlu
dCBkZWx0YUJ5dGVzID0gMDsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBpZiAoaW50IGJ5dGVzID0gbV9mcmFtZXNbbV9mcmFtZXMuc2l6ZSgpIC0gMV0uY2xlYXIodHJ1
ZSkpIHsKKyAgICAgICAgaWYgKGludCBieXRlcyA9IG1fZnJhbWVzW21fZnJhbWVzLnNpemUoKSAt
IDFdLmNsZWFyKEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpFbXB0eSkpIHsKICAgICAgICAgICAg
IGRlbHRhQnl0ZXMgKz0gYnl0ZXM7CiAgICAgICAgICAgICBkZWx0YUJ5dGVzICs9IG1fZGVjb2Rl
ZFByb3BlcnRpZXNTaXplOwogICAgICAgICAgICAgbV9kZWNvZGVkUHJvcGVydGllc1NpemUgPSAw
OwpAQCAtMzYyLDE1ICszNDcsMTUgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aXNTaXplQXZhaWxhYmxl
KCkKICAgICByZXR1cm4gbV9zaXplQXZhaWxhYmxlOwogfQogCi1ib29sIEJpdG1hcEltYWdlOjpl
bnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgZnJhbWVD
YWNoaW5nKQorYm9vbCBCaXRtYXBJbWFnZTo6ZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5k
ZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nIGNhY2hpbmcpCiB7CiAgICAgaWYgKGluZGV4ID49
IGZyYW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluZGV4ID49
IG1fZnJhbWVzLnNpemUoKQotICAgICAgICB8fCAoZnJhbWVDYWNoaW5nID09IENhY2hlTWV0YWRh
dGFBbmRGcmFtZSAmJiAhbV9mcmFtZXNbaW5kZXhdLm1faW1hZ2UpCi0gICAgICAgIHx8IChmcmFt
ZUNhY2hpbmcgPT0gQ2FjaGVNZXRhZGF0YU9ubHkgJiYgIW1fZnJhbWVzW2luZGV4XS5tX2hhdmVN
ZXRhZGF0YSkpCi0gICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDAsIGZyYW1lQ2FjaGluZyk7Cisg
ICAgICAgIHx8IChjYWNoaW5nID09IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFu
ZEltYWdlICYmICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2UoKSkKKyAgICAgICAgfHwgKGNhY2hp
bmcgPT0gSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhICYmICFtX2ZyYW1lc1tpbmRl
eF0uaGFzTWV0YWRhdGEoKSkpCisgICAgICAgIGNhY2hlRnJhbWUoaW5kZXgsIDAsIGNhY2hpbmcp
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zODQsOSArMzY5LDkgQEAgTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6OmZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgZmxvYXQgcHJl
c2VudGF0aW9uU2MKIAogICAgIC8vIFdlIG1heSBoYXZlIGNhY2hlZCBhIGZyYW1lIHdpdGggYSBo
aWdoZXIgc3Vic2FtcGxpbmcgbGV2ZWwsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0bwogICAgIC8v
IHJlLWRlY29kZSB3aXRoIGEgbG93ZXIgbGV2ZWwuCi0gICAgaWYgKGluZGV4IDwgbV9mcmFtZXMu
c2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5tX2ltYWdlICYmIHN1YnNhbXBsaW5nTGV2ZWwgPCBt
X2ZyYW1lc1tpbmRleF0ubV9zdWJzYW1wbGluZ0xldmVsKSB7CisgICAgaWYgKGluZGV4IDwgbV9m
cmFtZXMuc2l6ZSgpICYmIG1fZnJhbWVzW2luZGV4XS5oYXNJbWFnZSgpICYmIHN1YnNhbXBsaW5n
TGV2ZWwgPCBtX2ZyYW1lc1tpbmRleF0uc3Vic2FtcGxpbmdMZXZlbCgpKSB7CiAgICAgICAgIC8v
IElmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IGNhY2hlZCwgYnV0IGF0IHRvbyBzbWFsbCBhIHNpemUs
IHJlLWRlY29kZSBhIGxhcmdlciB2ZXJzaW9uLgotICAgICAgICBpbnQgc2l6ZUNoYW5nZSA9IC1t
X2ZyYW1lc1tpbmRleF0uY2xlYXIodHJ1ZSk7CisgICAgICAgIGludCBzaXplQ2hhbmdlID0gLW1f
ZnJhbWVzW2luZGV4XS5jbGVhcihJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6RW1wdHkpOwogICAg
ICAgICBpbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCk7CiAgICAgICAgIG1fZGVjb2RlZFNpemUgKz0g
c2l6ZUNoYW5nZTsKICAgICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKQEAgLTM5NCwxMCArMzc5
LDEwIEBAIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpmcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIGZsb2F0IHByZXNlbnRhdGlvblNjCiAgICAgfQogCiAgICAgLy8gSWYgd2UgaGF2
ZW4ndCBmZXRjaGVkIGEgZnJhbWUgeWV0LCBkbyBzby4KLSAgICBpZiAoaW5kZXggPj0gbV9mcmFt
ZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0ubV9pbWFnZSkKLSAgICAgICAgY2FjaGVGcmFt
ZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICBp
ZiAoaW5kZXggPj0gbV9mcmFtZXMuc2l6ZSgpIHx8ICFtX2ZyYW1lc1tpbmRleF0uaGFzSW1hZ2Uo
KSkKKyAgICAgICAgY2FjaGVGcmFtZShpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCi0gICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX2ltYWdlOworICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0uaW1hZ2UoKTsKIH0K
ICAgICAKIE5hdGl2ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZSgpCkBAIC00Mzks
MjcgKzQyNCwyNyBAQCBWZWN0b3I8TmF0aXZlSW1hZ2VQdHI+IEJpdG1hcEltYWdlOjpmcmFtZXNO
YXRpdmVJbWFnZXMoKQogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIENh
Y2hlTWV0YWRhdGFPbmx5KSkKKyAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgsIElt
YWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9pc0NvbXBsZXRlOworICAgIHJldHVybiBt
X2ZyYW1lc1tpbmRleF0uaXNDb21wbGV0ZSgpOwogfQogCiBmbG9hdCBCaXRtYXBJbWFnZTo6ZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmICghZW5zdXJlRnJhbWVJ
c0NhY2hlZChpbmRleCwgQ2FjaGVNZXRhZGF0YU9ubHkpKQorICAgIGlmICghZW5zdXJlRnJhbWVJ
c0NhY2hlZChpbmRleCwgSW1hZ2VGcmFtZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZXNbaW5kZXhdLm1fZHVyYXRpb247Cisg
ICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5kdXJhdGlvbigpOwogfQogCiBib29sIEJpdG1hcElt
YWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKCFlbnN1
cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAgaWYgKCFlbnN1
cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6TWV0YWRhdGEp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9oYXZl
TWV0YWRhdGEpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYTsKKyAg
ICBpZiAobV9mcmFtZXNbaW5kZXhdLmhhc01ldGFkYXRhKCkpCisgICAgICAgIHJldHVybiBtX2Zy
YW1lc1tpbmRleF0uaGFzQWxwaGEoKTsKIAogICAgIHJldHVybiBtX3NvdXJjZS5mcmFtZUhhc0Fs
cGhhQXRJbmRleChpbmRleCk7CiB9CkBAIC00NzEsMTEgKzQ1NiwxMSBAQCBib29sIEJpdG1hcElt
YWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKQogCiBJbWFnZU9yaWVudGF0aW9uIEJp
dG1hcEltYWdlOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7Ci0gICAg
aWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBDYWNoZU1ldGFkYXRhT25seSkpCisgICAg
aWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4LCBJbWFnZUZyYW1lRGF0YTo6Q2FjaGluZzo6
TWV0YWRhdGEpKQogICAgICAgICByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbigpOwogCi0gICAgaWYg
KG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZnJhbWVz
W2luZGV4XS5tX29yaWVudGF0aW9uOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0uaGFzTWV0YWRh
dGEoKSkKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVzW2luZGV4XS5vcmllbnRhdGlvbigpOwogCiAg
ICAgcmV0dXJuIG1fc291cmNlLm9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CiB9CkBAIC03Mjcs
NyArNzEyLDcgQEAgQ29sb3IgQml0bWFwSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcigpCiAg
ICAgICAgIHJldHVybiBDb2xvcigpOwogICAgIAogICAgIEFTU0VSVChtX2ZyYW1lcy5zaXplKCkp
OwotICAgIG1fc29saWRDb2xvciA9IFBsYXRmb3JtSW1hZ2UobV9mcmFtZXNbMF0ubV9pbWFnZSku
c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CisgICAgbV9zb2xpZENvbG9yID0gbV9mcmFtZXNbMF0u
c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgCiAgICAgQVNTRVJUKG1fc29saWRDb2xvcik7
CiAgICAgcmV0dXJuIG1fc29saWRDb2xvci52YWx1ZSgpOwpAQCAtNzM1LDggKzcyMCwxMCBAQCBD
b2xvciBCaXRtYXBJbWFnZTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkKICAgICAKIGJvb2wgQml0
bWFwSW1hZ2U6OmlzQWxtb3N0U29saWRDb2xvcigpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGZyYW1l
SW1hZ2VBdEluZGV4KDApOwotICAgIHJldHVybiAhaW1hZ2UgPyBmYWxzZSA6IFBsYXRmb3JtSW1h
Z2UoaW1hZ2UpLmlzQWxtb3N0U29saWRDb2xvcigpOworICAgIGlmIChmcmFtZUNvdW50KCkgIT0g
MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGVuc3VyZUZyYW1lSXNDYWNo
ZWQoMCkgJiYgbV9mcmFtZXNbMF0uaXNBbG1vc3RTb2xpZENvbG9yKCk7CiB9CiAgICAgCiBib29s
IEJpdG1hcEltYWdlOjpjYW5BbmltYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDI1MDQxMzcuLjIyMThjODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMjgsOCArMjgs
OSBAQAogI2lmbmRlZiBCaXRtYXBJbWFnZV9oCiAjZGVmaW5lIEJpdG1hcEltYWdlX2gKIAotI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgor
I2luY2x1ZGUgIkltYWdlRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5o
IgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgpAQCAtNTEs
NTYgKzUyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaW1lcjsKIAotLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyBGcmFtZURh
dGEgQ2xhc3MKLS8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotCi1zdHJ1Y3QgRnJhbWVEYXRhIHsKLXB1YmxpYzoKLSAgICBGcmFtZURhdGEoKQotICAg
ICAgICA6IG1faGF2ZU1ldGFkYXRhKGZhbHNlKQotICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxz
ZSkKLSAgICAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICB+RnJh
bWVEYXRhKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2ltYWdlKQotICAgICAgICAgICAgUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5jbGVhclN1YkltYWdlcygpOwotICAgIH0KLQotICAgIC8vIENsZWFy
IHRoZSBjYWNoZWQgaW1hZ2UgZGF0YSBvbiB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhl
IG1ldGFkYXRhLgotICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdl
IGRhdGEgdG8gY2xlYXIuCi0gICAgdW5zaWduZWQgY2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQot
ICAgIHsKLSAgICAgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IHVzZWRGcmFtZUJ5dGVzKCk7Ci0g
ICAgICAgIAotICAgICAgICBpZiAoY2xlYXJNZXRhZGF0YSkKLSAgICAgICAgICAgIG1faGF2ZU1l
dGFkYXRhID0gZmFsc2U7Ci0KLSAgICAgICAgbV9zdWJzYW1wbGluZ0xldmVsID0gMDsKLSAgICAg
ICAgbV9pbWFnZSA9IG51bGxwdHI7Ci0KLSAgICAgICAgcmV0dXJuIGZyYW1lQnl0ZXM7Ci0gICAg
fQotICAgIAotICAgIHVuc2lnbmVkIHVzZWRGcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9p
bWFnZSA/IG1fZnJhbWVCeXRlcyA6IDA7IH0KLQotICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7
Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgRGVmYXVsdEltYWdlT3JpZW50
YXRpb24gfTsKLSAgICBTdWJzYW1wbGluZ0xldmVsIG1fc3Vic2FtcGxpbmdMZXZlbCB7IDAgfTsK
LSAgICBmbG9hdCBtX2R1cmF0aW9uIHsgMCB9OwotICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAx
OwotICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsKLSAgICBib29sIG1faGFzQWxwaGEgOiAxOwot
ICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlcyB7IDAgfTsKLX07Ci0KLS8vID09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vIEJpdG1hcEltYWdlIENsYXNz
Ci0vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0K
IGNsYXNzIEJpdG1hcEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKICAgICBmcmllbmQgY2xh
c3MgR2VuZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOwpAQCAtMjIwLDExICsxNzEsMTAgQEAgcHJvdGVjdGVkOgogICAgIEltYWdlT3JpZW50YXRp
b24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KTsKIAogICAgIC8vIERlY29kZXMgYW5k
IGNhY2hlcyBhIGZyYW1lLiBOZXZlciBhY2Nlc3NlZCBleGNlcHQgaW50ZXJuYWxseS4KLSAgICBl
bnVtIEltYWdlRnJhbWVDYWNoaW5nIHsgQ2FjaGVNZXRhZGF0YU9ubHksIENhY2hlTWV0YWRhdGFB
bmRGcmFtZSB9OwotICAgIHZvaWQgY2FjaGVGcmFtZShzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwsIEltYWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKKyAgICB2
b2lkIGNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBJbWFnZUZyYW1l
RGF0YTo6Q2FjaGluZyA9IEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nOjpNZXRhZGF0YUFuZEltYWdl
KTsKIAogICAgIC8vIENhbGxlZCBiZWZvcmUgYWNjZXNzaW5nIG1fZnJhbWVzW2luZGV4XSBmb3Ig
aW5mbyB3aXRob3V0IGRlY29kaW5nLiBSZXR1cm5zIGZhbHNlIG9uIGluZGV4IG91dCBvZiBib3Vu
ZHMuCi0gICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1hZ2VGcmFt
ZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOworICAgIGJvb2wgZW5zdXJlRnJhbWVJ
c0NhY2hlZChzaXplX3QgaW5kZXgsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFt
ZURhdGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogCiAgICAgLy8gQ2FsbGVkIHRvIGlu
dmFsaWRhdGUgY2FjaGVkIGRhdGEuIFdoZW4gfGRlc3Ryb3lBbGx8IGlzIHRydWUsIHdlIHdpcGUg
b3V0CiAgICAgLy8gdGhlIGVudGlyZSBmcmFtZSBidWZmZXIgY2FjaGUgYW5kIHRlbGwgdGhlIGlt
YWdlIHNvdXJjZSB0byBkZXN0cm95CkBAIC0yODcsNyArMjM3LDcgQEAgcHJpdmF0ZToKICAgICBt
dXRhYmxlIEludFNpemUgbV9zaXplUmVzcGVjdGluZ09yaWVudGF0aW9uOwogCiAgICAgc2l6ZV90
IG1fY3VycmVudEZyYW1lIHsgMCB9OyAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUg
b2YgYW5pbWF0aW9uLgotICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBh
cnJheSBvZiB0aGUgY2FjaGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJl
ZiBmcmFtZXMgdG8gcGluIHRoZW0gaW4gdGhlIGNhY2hlLgorICAgIFZlY3RvcjxJbWFnZUZyYW1l
RGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRo
ZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2Fj
aGUuCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fZnJhbWVUaW1lcjsKICAgICBpbnQg
bV9yZXBldGl0aW9uQ291bnQgeyBjQW5pbWF0aW9uTm9uZSB9OyAvLyBIb3cgbWFueSB0b3RhbCBh
bmltYXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRvLiBUaGlzIHdpbGwgYmUgY0FuaW1hdGlvbk5vbmUg
aWYgdGhpcyBpbWFnZSB0eXBlIGlzIGluY2FwYWJsZSBvZiBhbmltYXRpb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCAzMjIzYzFjLi44ZTdiNTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTE3Niw2ICsxNzYsOCBA
QCBwdWJsaWM6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpcnR1YWwgYm9vbCBub3RTb2xp
ZENvbG9yKCkgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCisgICAgCisgICAgdmlydHVhbCB2b2lk
IGxheW91dElmTmVlZGVkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUZXh0U3RyZWFt
JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRnJhbWVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRnJhbWVEYXRhLmNwcAppbmRleCBlNjlkZTI5Li4wY2UxNGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuY3BwCkBAIC0wLDAg
KzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUZyYW1lRGF0YS5oIgorCisjaW5j
bHVkZSAiQ29sb3IuaCIKKworI2lmIFVTRShDRykKKyNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5o
IgorI2Vsc2UKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAi
UGxhdGZvcm1JbWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ltYWdlRnJhbWVEYXRh
OjpJbWFnZUZyYW1lRGF0YSgpCit7Cit9CisKK0ltYWdlRnJhbWVEYXRhOjpJbWFnZUZyYW1lRGF0
YShOYXRpdmVJbWFnZVB0ciYmIGltYWdlKQorICAgIDogbV9zdGF0dXMoRGVjb2RpbmdTdGF0dXM6
OkNvbXBsZXRlKQorICAgICwgbV9pbWFnZShXVEZNb3ZlKGltYWdlKSkKK3sKKyAgICBtX3NpemUg
PSBQbGF0Zm9ybUltYWdlKG1faW1hZ2UpLnNpemUoKTsKKyAgICBtX2hhc0FscGhhID0gUGxhdGZv
cm1JbWFnZShtX2ltYWdlKS5oYXNBbHBoYSgpOworfQorCitJbWFnZUZyYW1lRGF0YTo6SW1hZ2VG
cmFtZURhdGEoSW1hZ2VEZWNvZGVyJiBkZWNvZGVyLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyBmcmFtZUNhY2hpbmcpCit7CisgICAgQVNT
RVJUKGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRhZGF0YSB8fCBmcmFtZUNhY2hpbmcgPT0g
Q2FjaGluZzo6TWV0YWRhdGFBbmRJbWFnZSk7CisgICAgCisgICAgaWYgKGZyYW1lQ2FjaGluZyA9
PSBDYWNoaW5nOjpJbWFnZSB8fCBmcmFtZUNhY2hpbmcgPT0gQ2FjaGluZzo6TWV0YWRhdGFBbmRJ
bWFnZSkgeworICAgICAgICBtX2ltYWdlID0gZGVjb2Rlci5jcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CisgICAgICAgIG1fc3Vic2FtcGxpbmdMZXZlbCA9
IHN1YnNhbXBsaW5nTGV2ZWw7CisgICAgfQorICAgIAorICAgIGlmIChmcmFtZUNhY2hpbmcgPT0g
Q2FjaGluZzo6TWV0YWRhdGEgfHwgZnJhbWVDYWNoaW5nID09IENhY2hpbmc6Ok1ldGFkYXRhQW5k
SW1hZ2UpIHsKKyAgICAgICAgbV9vcmllbnRhdGlvbiA9IGRlY29kZXIub3JpZW50YXRpb25BdElu
ZGV4KGluZGV4KTsKKyAgICAgICAgbV9zdGF0dXMgPSBkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoaW5kZXgpID8gRGVjb2RpbmdTdGF0dXM6OkNvbXBsZXRlIDogRGVjb2RpbmdTdGF0dXM6
OlBhcnRpYWw7CisgICAgICAgIAorICAgICAgICBpZiAoZGVjb2Rlci5yZXBldGl0aW9uQ291bnQo
KSAhPSBjQW5pbWF0aW9uTm9uZSkKKyAgICAgICAgICAgIG1fZHVyYXRpb24gPSBkZWNvZGVyLmZy
YW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKKyAgICAgICAgCisgICAgICAgIG1faGFzQWxwaGEg
PSBkZWNvZGVyLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKKyAgICAgICAgbV9zaXplID0g
ZGVjb2Rlci5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICB9
Cit9CisKK0ltYWdlRnJhbWVEYXRhOjp+SW1hZ2VGcmFtZURhdGEoKQoreworICAgIGNsZWFyU3Vi
SW1hZ2VzKCk7Cit9CisKK3ZvaWQgSW1hZ2VGcmFtZURhdGE6OmNsZWFyU3ViSW1hZ2VzKCkKK3sK
KyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBQbGF0Zm9ybUlt
YWdlKG1faW1hZ2UpLmNsZWFyU3ViSW1hZ2VzKCk7Cit9CisKK3Vuc2lnbmVkIEltYWdlRnJhbWVE
YXRhOjpjbGVhcihDYWNoaW5nIGZyYW1lQ2FjaGluZykKK3sKKyAgICBBU1NFUlQoZnJhbWVDYWNo
aW5nID09IENhY2hpbmc6OkVtcHR5IHx8IGZyYW1lQ2FjaGluZyA9PSBDYWNoaW5nOjpNZXRhZGF0
YSk7CisgICAgCisgICAgdW5zaWduZWQgZnJhbWVCeXRlcyA9IHRoaXMtPmZyYW1lQnl0ZXMoKTsK
KyAgICAKKyAgICBjbGVhclN1YkltYWdlcygpOworICAgIAorICAgIGlmIChmcmFtZUNhY2hpbmcg
PT0gQ2FjaGluZzo6RW1wdHkpCisgICAgICAgICp0aGlzID0gSW1hZ2VGcmFtZURhdGEoKTsKKyAg
ICBlbHNlCisgICAgICAgIG1faW1hZ2UgPSBudWxscHRyOworICAgIAorICAgIHJldHVybiBmcmFt
ZUJ5dGVzOworfQorCitDb2xvciBJbWFnZUZyYW1lRGF0YTo6c2luZ2xlUGl4ZWxTb2xpZENvbG9y
KCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc0ltYWdlKCkgfHwgbV9zaXplICE9IEludFNpemUoMSwg
MSkpCisgICAgICAgIHJldHVybiBDb2xvcigpOworICAgIAorICAgIHJldHVybiBQbGF0Zm9ybUlt
YWdlKG1faW1hZ2UpLnNpbmdsZVBpeGVsU29saWRDb2xvcigpOworfQorCitib29sIEltYWdlRnJh
bWVEYXRhOjppc0FsbW9zdFNvbGlkQ29sb3IoKSBjb25zdAoreworICAgIGlmICghaGFzSW1hZ2Uo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBQbGF0Zm9ybUltYWdl
KG1faW1hZ2UpLmlzQWxtb3N0U29saWRDb2xvcigpOworfQorICAgIAorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVEYXRhLmgKaW5kZXggZTY5ZGUy
OS4uNTg2MDQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VGcmFtZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lRGF0YS5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbWFnZU9y
aWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdl
UHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7CitjbGFzcyBJbWFn
ZURlY29kZXI7CisKKy8vIFN1YnNhbXBsaW5nTGV2ZWwuIDAgaXMgbm8gc3Vic2FtcGxpbmcsIDEg
aXMgaGFsZiBkaW1lbnNpb25zIG9uIGVhY2ggYXhpcyBldGMuCit1c2luZyBTdWJzYW1wbGluZ0xl
dmVsID0gdWludDhfdDsKKworZW51bSA6IFN1YnNhbXBsaW5nTGV2ZWwgeworICAgIE1pblN1YnNh
bXBsaW5nTGV2ZWwgPSAwLAorICAgIE1heFN1YnNhbXBsaW5nTGV2ZWwgPSAzLAorICAgIERlZmF1
bHRTdWJzYW1wbGluZ0xldmVsID0gTWluU3Vic2FtcGxpbmdMZXZlbAorfTsKKworY2xhc3MgSW1h
Z2VGcmFtZURhdGEgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgQ2FjaGluZyB7IEVtcHR5LCBN
ZXRhZGF0YSwgSW1hZ2UsIE1ldGFkYXRhQW5kSW1hZ2UgfTsKKyAgICBlbnVtIGNsYXNzIERlY29k
aW5nU3RhdHVzIHsgRW1wdHksIFBhcnRpYWwsIENvbXBsZXRlIH07CisgICAgCisgICAgSW1hZ2VG
cmFtZURhdGEoKTsKKyAgICBJbWFnZUZyYW1lRGF0YShOYXRpdmVJbWFnZVB0ciYmKTsKKyAgICBJ
bWFnZUZyYW1lRGF0YShJbWFnZURlY29kZXImLCBzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBEZWZhdWx0U3Vic2FtcGxpbmdMZXZlbCwgQ2FjaGluZyA9IENhY2hpbmc6Ok1ldGFkYXRh
QW5kSW1hZ2UpOworICAgIAorICAgIH5JbWFnZUZyYW1lRGF0YSgpOworICAgIAorICAgIHVuc2ln
bmVkIGNsZWFyKENhY2hpbmcpOworICAgIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNv
bnN0OworICAgIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKCkgY29uc3Q7CisgICAgCisgICAgRGVj
b2RpbmdTdGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KKyAgICBib29s
IGlzQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6
Q29tcGxldGU7IH0KKyAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
KyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gaGFzSW1hZ2UoKSA/IG1f
c2l6ZS5hcmVhKCkgKiA0IDogMDsgfQorICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZTsgfQorICAgIAorICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgU3Vic2FtcGxpbmdMZXZl
bCBzdWJzYW1wbGluZ0xldmVsKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzYW1wbGluZ0xldmVsOyB9
CisgICAgZmxvYXQgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CisgICAg
CisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWxwaGE7IH0KKyAgICBi
b29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIGJvb2wgaGFzTWV0
YWRhdGEoKSBjb25zdCB7IHJldHVybiAhbV9zaXplLmlzRW1wdHkoKTsgfQorICAgIAorcHJpdmF0
ZToKKyAgICB2b2lkIGNsZWFyU3ViSW1hZ2VzKCk7CisgICAgCisgICAgRGVjb2RpbmdTdGF0dXMg
bV9zdGF0dXMgeyBEZWNvZGluZ1N0YXR1czo6RW1wdHkgfTsKKyAgICBJbnRTaXplIG1fc2l6ZTsK
KyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIAorICAgIEltYWdlT3JpZW50YXRpb24g
bV9vcmllbnRhdGlvbiB7IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uIH07CisgICAgU3Vic2FtcGxp
bmdMZXZlbCBtX3N1YnNhbXBsaW5nTGV2ZWwgeyAwIH07CisgICAgZmxvYXQgbV9kdXJhdGlvbiB7
IDAgfTsKKyAgICBib29sIG1faGFzQWxwaGEgeyB0cnVlIH07Cit9OworICAgIAorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGRk
ZDhhNTUuLjgyZjZlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKQEAgLTIyNCw2ICsyMjQsMTEgQEAgTmF0aXZlSW1hZ2VQdHIgSW1h
Z2VTb3VyY2U6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXYKICAgICByZXR1cm4gaW5pdGlhbGl6ZWQoKSA/IG1fZGVjb2Rlci0+Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpIDogbnVsbHB0cjsKIH0KIAorSW1h
Z2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lRGF0YUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpD
YWNoaW5nIGNhY2hpbmcpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemVkKCkgPyBJbWFnZUZyYW1l
RGF0YSgqbV9kZWNvZGVyLCBpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCwgY2FjaGluZykgOiBJbWFn
ZUZyYW1lRGF0YSgpOworfQorICAgIAogdm9pZCBJbWFnZVNvdXJjZTo6ZHVtcChUZXh0U3RyZWFt
JiB0cykgY29uc3QKIHsKICAgICBpZiAobV9hbGxvd1N1YnNhbXBsaW5nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggNjAzNTczOS4uYTQw
YzdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEltYWdlU291cmNlX2gKICNkZWZpbmUgSW1h
Z2VTb3VyY2VfaAogCisjaW5jbHVkZSAiSW1hZ2VGcmFtZURhdGEuaCIKICNpbmNsdWRlICJJbWFn
ZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJOYXRpdmVJ
bWFnZVB0ci5oIgpAQCAtNjMsOSArNjQsNiBAQCBjb25zdCBpbnQgY0FuaW1hdGlvbkxvb3BPbmNl
ID0gMDsKIGNvbnN0IGludCBjQW5pbWF0aW9uTG9vcEluZmluaXRlID0gLTE7CiBjb25zdCBpbnQg
Y0FuaW1hdGlvbk5vbmUgPSAtMjsKIAotLy8gU3Vic2FtcGxpbmdMZXZlbC4gMCBpcyBubyBzdWJz
YW1wbGluZywgMSBpcyBoYWxmIGRpbWVuc2lvbnMgb24gZWFjaCBheGlzIGV0Yy4KLXR5cGVkZWYg
c2hvcnQgU3Vic2FtcGxpbmdMZXZlbDsKLQogY2xhc3MgSW1hZ2VTb3VyY2UgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEltYWdlU291cmNlKTsKICAgICBmcmllbmQgY2xhc3MgQml0bWFwSW1h
Z2U7CkBAIC0xMzIsMTggKzEzMCwxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd1N1YnNhbXBs
aW5nT2ZGcmFtZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKICAgICAKICAgICAvLyBTaXplIG9mIG9w
dGlvbmFsbHkgc3Vic2FtcGxlZCBmcmFtZS4KLSAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCwgUmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVt
ID0gRG9Ob3RSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbikgY29uc3Q7CisgICAgSW50U2l6ZSBmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IERlZmF1bHRTdWJzYW1wbGlu
Z0xldmVsLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gPSBEb05vdFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKSBjb25zdDsKICAgICAKICAgICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRl
cyBpbiB0aGUgZGVjb2RlZCBmcmFtZS4gSWYgdGhlIGZyYW1lIGlzIG5vdCB5ZXQKICAgICAvLyBk
ZWNvZGVkIHRoZW4gcmV0dXJuIDAuCi0gICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCkgY29uc3Q7CisgICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2
ZWwpIGNvbnN0OwogICAgIAogICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7
CiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsg
Ly8gRVhJRiBpbWFnZSBvcmllbnRhdGlvbgogICAgIAogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5v
dCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CiAg
ICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgTmF0aXZlSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gMCk7Cisg
ICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gRGVmYXVsdFN1YnNhbXBsaW5nTGV2ZWwpOworICAgIEltYWdlRnJhbWVEYXRh
IGNyZWF0ZUZyYW1lRGF0YUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gRGVmYXVs
dFN1YnNhbXBsaW5nTGV2ZWwsIEltYWdlRnJhbWVEYXRhOjpDYWNoaW5nID0gSW1hZ2VGcmFtZURh
dGE6OkNhY2hpbmc6Ok1ldGFkYXRhQW5kSW1hZ2UpOwogICAgIAogcHJpdmF0ZToKICAgICB2b2lk
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>